I am testing the auth script below running on NT 4 sp6 calling to SQL Server 7, and it keeps crashing php.exe (exception: access violation). I am losing my freaking mind! Has anyone else had a similar problem? Can anyone see an error? It works OK if I take out the authenticate(), but I can't find the error!
<?
function login_form(){
$this_page=getenv("REQUEST_URI");
?>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HEAD><TITLE>BAView Login</TITLE>
</HEAD>
<BODY bgcolor="white">
<CENTER>
<IMG SRC="logo.gif" BORDER="0">
<BR><BR>
<FONT SIZE=+1 COLOR="#FF0000">Please Log In...</FONT>
<FORM NAME=login ACTION="<? echo $this_page ?>" METHOD=post>
<INPUT TYPE="hidden" NAME="action" VALUE="Try Auth">
<TABLE BORDER=0>
<TR>
<TD><B>Username:</B></TD>
<TD><INPUT NAME="username" TYPE="text" SIZE="10"></TD>
</TR>
<TR>
<TD><B>Password:</B></TD>
<TD><INPUT NAME="password" TYPE="password" SIZE="10"></TD>
</TR>
</TABLE>
<BR>
<INPUT TYPE="submit" VALUE="Log in">
</FORM>
</BODY>
<?
exit;
}
function authenticate(){
$DB="Auth";
$USER="user";
$PASS="password";
$cnx = odbc_connect($DB, $USER, $PASS);
$username=$HTTP_POST_VARS["username"];
$password=$HTTP_POST_VARS["password"];
$authenticate=odbc_exec($cnx, "SELECT * FROM auth_info_table WHERE username = '$username'");
if (!odbc_fetch_row($authenticate)) {
echo "$username not found<p>.";
exit;
}
else
{
echo "$username found in db<p>";
while (odbc_fetch_row( $authenticate)); {
$db_username=odbc_result($authenticate, 1);
$db_password=odbc_result($authenticate, 2);
}
echo "check $username against $db_username<p>";
if ($username != $db_username) {
echo "bad username<p>";
exit;
}
echo "check $password against $db_password<p>";
if ($password != $db_password) {
echo "bad password<p>";
exit;
}
}
}
if ($HTTP_POST_VARS["action"]!="Try Auth")
login_form();
else
authenticate();
?>