HTTP 500 lors d'ajout de données, pourquoi ?

Signaler
-
 Test -
Bonjour,

Depuis le début de l'année, je me suis mis en tête de réussir à créer un site complet en ASP (et oui, y a des inconscients partout!). Bref, malgré des heures et des heures de travail, des litres de café, un nombre incalculable de cigarettes et des milliers de cheveux arrachés, ca a l'air de fonctionner peu à peu.

Sauf ma page d'enregistrement d'utilisateurs. Voilà le concept, j'ai une page avec un formulaire contenant deux textboxes, une pour le login et une pour le mot de passe et un bouton. Un utilisateur existant entre son login et mot de passe, celui-ci est vérifié (sur une autre page) et le visiteur est ensuite dirigé dans une zone de membres (ca fonctionne!).

Lorsque l'utilisateur entre un mauvais mot de passe, idem le processus de vérification se fait et il est redirigé sur une page d'erreur.

Lorsque le nom d'utilisateur n'existe pas, la page de vérification (voir le schéma ci-dessous, ca sera plus simple) confirme le nouveau nom d'utilisateur et le mot de passe (ça fonctionne!) et permet à l'utilisateur soit de revenir à la page login (ça fonctionne!) soit d'enregistrer les données pour utiliser son login et mot de passe dans le futur (là ca fonctionne pas :( - Internal Server Error HTTP 500).

Voilà donc si quelqu'un veut bien m'aider à ne pas être totalement dégoûté de l'ASP (ça fait trois semaines que je suis sur CETTE page) j'aprécierais vraiment son aide et je suis prêt à lui ériger une statue ;)

Merci d'avance.

Voilà le concept:

login.asp (entrée du login et mdp pour nouvel utilisateur ou utilisateur existant)
|
|
V
transmission des données (method get)
page verifcompte.asp

Voici le code de la page verifcompte.asp:

<%
' on ouvre la connexion
If IsObject(Session("sessWM")) Then
Set conn = Session("sessWM")
Else
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "Welcome-Montreal_data","",""
Set Session("sessWM") = conn
End If
%>
<% if request.querystring("Action")<>"" then %>
<%
' test si l'utilisateur existe déjà
sql = "SELECT Users.UserID, Users.Password FROM Users WHERE ((Users.UserID)='" & Request.QueryString("UserID") & "') "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
if rs.recordcount>0 then ' Utilisateur existant
sql = "SELECT Users.ID, Users.UserID, Users.Password FROM Users WHERE (((Users.UserID)='" & Request.QueryString("UserID") & "') AND ((Users.Password)='" & Request.QueryString("Password") & "')) "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
if rs.recordcount>0 then ' mot de passe correct
rs.movefirst
session("Numero")=rs.fields("ID")
' écriture du cookie
Response.Cookies("Webmaster")=session("Numero")
Response.Cookies("Webmaster").Expires = Date+365
response.redirect "members.asp"
else
response.redirect "acces_refuse.asp"
end if
end if
%>
<% end if %>
<% if request.querystring("Act")="creer" then %>
<% sql = "SELECT Users.* FROM Users "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
rs.AddNew
rs.Fields("UserID")=request.querystring("UserID")
rs.Fields("Password")=request.querystring("Password")
rs.update
sql = "select max(ID) from Users"
set rs = conn.Execute(sql)
session("Numero")=rs.fields(0)
' écriture du cookie
' Response.Cookies("Webmaster")=session("Numero")
' Response.Cookies("Webmaster").Expires = Date+365
' response.redirect "members.asp"
%>
<% end if%>
<html>
<!-- #BeginTemplate "/Templates/template.dwt" -->
<head>
<!-- #BeginEditable "doctitle" -->
<title>Welcome Montreal - Votre guide par Internet</title>
<!-- #EndEditable -->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
</script>
<link rel="stylesheet" href="../css/link.css" type="text/css">
</head>

[verifcompte.asp?Act=creer&UserID=<%=request.querystring( &Password=<%=request.querystring("Password")%>">Oui]
| [login.asp Non]
</td>
</tr>
<tr>
<td width="560" height="1" valign="top"></td>
</tr>
</table>
<!-- #EndEditable --></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
Copyright
© 2000-2001 Cogesorg SARL. Tous droits réservés.

<map name="Map">
[index.asp
]
[partner.asp
]

</map>

<!-- #EndTemplate -->
</html>

3 réponses

Le problème c'est que erreur 500 c'est vague donc petit conseil pour essayer de voir le message d'erreur (tu dois être sur 2000/IIS5 toi :) )
Et puis sans ta base de données, cela va pas être évident si de voir si c'est une faute de frappe par exemple donc dans un 1er temps, en haut de ta page tu mets
<%On Error Resume Next%>
Et en bas, tu mets
<%=Err.Description%>
Et ça tu peux le mettre à plusieurs endroits de ta page pour essayer de voir à partir de quel moment le pb survient
S'il n'y a pas de message d'erreur, cela n'affichera rien.

Déjà si tu arrive à voir le message d'erreur ASP, on pourra plus voir d'ou vient le pb

A++

Nix :-p
Salut,

Tout d'abord il serait bon d'utiliser un petit peu les fonctions de gestion d'erreur de l'ASP (On Error Resume Next ou On Error GoTo).
Ce que je te conseil aussi, c'est de vérifier le contenu de tes querystring avant de faire le teste de la valeur du contenu. Ceci afin d'éviter de faire des comparaisons sur un objet null qui te planterai la machine.

<% if request.querystring("Act")="creer" then %>
<% sql = "SELECT Users.* FROM Users "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
rs.AddNew
rs.Fields("UserID")=request.querystring("UserID")
rs.Fields("Password")=request.querystring("Password")
rs.update

'libère d'abord l'ancien recordset
set rs = Nothing

sql = "select max(ID) from Users"
set rs = conn.Execute(sql)
session("Numero")=rs.fields(0)
' écriture du cookie
' Response.Cookies("Webmaster")=session("Numero")
' Response.Cookies("Webmaster").Expires = Date+365
' response.redirect "members.asp"
%>
<% end if%>
<form name="form1" method="post" action="">
<small>Créer
un compte</small>

Nom
d'utilisateur : <%=request.querystring("UserID")%>

Mot
de Passe : <%=request.querystring("Password")%>

Voulez
vous créer ce compte [verifcompte.asp?Act=creer&UserID=<%=request.querystring( &Password=<%=request.querystring("Password")%>">Oui]
| [login.asp Non]

En espérant que tu réussiras à t'en sortir, je te souhaites encore une bonne journée.

Galnoush.