ik heb een fout in een login script

Status
Niet open voor verdere reacties.

computercrash

Gebruiker
Lid geworden
10 jun 2007
Berichten
57
ik heb een fout in een loginscript

het login script komt van http://php.about.com/od/finishedphp1/ss/php_login_code.htm

er zit een fout in de pagina register.php in line 51:
PHP:
<?php 
// Connects to your Database 
mysql_connect("localhost", "kokkie", "CENSUUR_DOOR_SVU") or die(mysql_error()); 
mysql_select_db("kokkie_2g4life") or die(mysql_error()); 

//Checks if there is a login cookie
if(isset($_COOKIE['ID_my_site']))

//if there is, it logs you in and directes you to the members page
{ 
$username = $_COOKIE['ID_my_site']; 
$pass = $_COOKIE['Key_my_site'];
$check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());
while($info = mysql_fetch_array( $check )) 
{
if ($pass != $info['password']) 
{
}
else
{
header("Location: members.php");

}
}
}

//if the login form is submitted
if (isset($_POST['submit'])) { // if form has been submitted

// makes sure they filled it in
if(!$_POST['username'] | !$_POST['pass']) {
die('You did not fill in a required field.');
}
// checks it against the database

if (!get_magic_quotes_gpc()) {
$_POST['email'] = addslashes($_POST['email']);
}
$check = mysql_query("SELECT * FROM users WHERE username = '".$_POST['username']."'")or die(mysql_error());

//Gives error if user dosen't exist
$check2 = mysql_num_rows($check);
if ($check2 == 0) {
die('Die gebruiker bestaat niet! 

<a href=register.php>Klik hier om te registreren</a>');
}
while($info = mysql_fetch_array( $check )) 
{
$_POST['pass'] = stripslashes($_POST['pass']);
$info['password'] = stripslashes($info['password']);
$_POST['pass'] = md5($_POST['pass']);

//gives error if the password is wrong
if ($_POST['pass'] != $info['password']) {
die('Verkeerd wachtwoord, probeer opnieuw!');
}
else 
{ 

// if login is ok then we add a cookie 
$_POST['username'] = stripslashes($_POST['username']); 
$hour = time() + 3600; 
setcookie(ID_my_site, $_POST['username'], $hour); 
setcookie(Key_my_site, $_POST['pass'], $hour); 

//then redirect them to the members area 
header("Location: members.php"); 
} 
} 
} 
else 
{ 

// if they are not logged in 
?> 
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> 
<table border="0"> 
<tr><td colspan=2><h1>Login</h1></td></tr> 
<tr><td>Username:</td><td> 
<input type="text" name="username" maxlength="40"> 
</td></tr> 
<tr><td>Password:</td><td> 
<input type="password" name="pass" maxlength="50"> 
</td></tr> 
<tr><td colspan="2" align="right"> 
<input type="submit" name="submit" value="Login"> 
</td></tr> 
</table> 
</form> 
<?php 
} 

?>

als iemand de fout ziet

alvast bedankt
kokkie
 
Laatst bewerkt:
humz... ik kan helemaal geen fout vinden. Je zou kunnen testen of het aan de benaming ligt ddor die $info['password'] te vervangen door een andere naam variabele! en dan in de daarop volgende functie de $info['password'] te vervangen door die variabele. Misschien dat het daar aan ligt maar een fout zie ik niet.
 
Het is alleen niet zo slim om ook je wachtwoord in je openingspost te zetten, ik zit namelijk op dit moment in je mailbox.

Ik zal je niet hacken of wat dan ook, en heb niets gewijzigd/gelezen/verwijderd, maar ik zou er wel op letten.

Ik heb overigens maar even van de vrijheid genoten je wachtwoord in je code te censureren.
 
En de fout die je gemaakt hebt is betrekkelijk eenvoudig:

PHP:
$info['password'] = stripslashes($info['password']);

Het volgende is correct:

PHP:
$password = stripslashes($info['password']);

Je kunt namelijk een array-variabelewaarde uit een resultset niet aanpassen, en dat is logisch.
 
Je kunt namelijk een array-variabelewaarde uit een resultset niet aanpassen, en dat is logisch.

Als het zo logisch is waar werkt die regel daarboven dan wel?
PHP:
$_POST['pass'] = stripslashes($_POST['pass']);
Dat is dan toch hetzelfde principe?

@TS: Wat voor fout geeft PHP wanneer je die pagina oproept? (Dus niet alleen op welke regel hij zich bevindt)
 
hij geeft deze melding

Parse error: syntax error, unexpected $end in /home/kokkie/public_html/register.php on line 51

ja ik heb niet zo veel verstand
 
zou je onderstaande code kunnen proberen?(als testje, geeft hij nog die foutmelding?)
LET OP!
wijzig: CENSUUR_DOOR_SVU
in de regel:
PHP:
mysql_connect("localhost", "kokkie", "CENSUUR_DOOR_SVU") or die(mysql_error());
in je eigen wachtwoord.van je database

PHP:
<?php 
// Connects to your Database 
mysql_connect("localhost", "kokkie", "CENSUUR_DOOR_SVU") or die(mysql_error()); 
mysql_select_db("kokkie_2g4life") or die(mysql_error()); 

//Checks if there is a login cookie 
if(isset($_COOKIE['ID_my_site'])) 

//if there is, it logs you in and directes you to the members page 
{ 
$username = $_COOKIE['ID_my_site']; 
$pass = $_COOKIE['Key_my_site']; 
$check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error()); 
while($info = mysql_fetch_array( $check )) 
{ 
if ($pass != $info['password']) 
{ 
} 
else 
{ 
header("Location: members.php"); 

} 
} 
} 

//if the login form is submitted 
if (isset($_POST['submit'])) { // if form has been submitted 

// makes sure they filled it in 
if(!$_POST['username'] | !$_POST['pass']) { 
die('You did not fill in a required field.'); 
} 
// checks it against the database 

if (!get_magic_quotes_gpc()) { 
$_POST['email'] = addslashes($_POST['email']); 
} 
$check = mysql_query("SELECT * FROM users WHERE username = '".$_POST['username']."'")or die(mysql_error()); 

//Gives error if user dosen't exist 
$check2 = mysql_num_rows($check); 
if ($check2 == 0) { 
die('Die gebruiker bestaat niet! 

<a href=register.php>Klik hier om te registreren</a>'); 
}
while($info = mysql_fetch_array( $check )) 
{ 
$_POST['pass'] = stripslashes($_POST['pass']); 
$password = stripslashes($info['password']); 
$_POST['pass'] = md5($_POST['pass']); 

//gives error if the password is wrong 
if ($_POST['pass'] != $password) { 
die('Verkeerd wachtwoord, probeer opnieuw!'); 
} 
else 
{ 

// if login is ok then we add a cookie 
$_POST['username'] = stripslashes($_POST['username']); 
$hour = time() + 3600; 
setcookie(ID_my_site, $_POST['username'], $hour); 
setcookie(Key_my_site, $_POST['pass'], $hour); 

//then redirect them to the members area 
header("Location: members.php"); 
} 
} 
} 
else 
{ 

// if they are not logged in 
?> 
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> 
<table border="0"> 
<tr><td colspan=2><h1>Login</h1></td></tr> 
<tr><td>Username:</td><td> 
<input type="text" name="username" maxlength="40"> 
</td></tr> 
<tr><td>Password:</td><td> 
<input type="password" name="pass" maxlength="50"> 
</td></tr> 
<tr><td colspan="2" align="right"> 
<input type="submit" name="submit" value="Login"> 
</td></tr> 
</table> 
</form> 
<?php 
} 

?>
 
Zou je zo vriendelijk willen zijn die oplossing met de rest van de gebruikers te willen delen?
 
ik zou het best willen doen maar ik heb dat script niet meer op me site staan ik heb een veel betere en uitgebreidere gevonden

MVG kokkie
 
Oke, dus je hebt de fout gevonden maar gebruikt het script nu niet meer...

Dan kun je toch in het script dat hier nog staat de oplossing geven?

Zo wordt er dus nuttig gebruik gemaakt van onze hulp... Het werkt niet, er worden oplossingen aangeboden maar jij download dan vervolgens een ander script. Zo heeft onze hulp natuurlijk ook geen zin.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan