Aktivációs hiba
Az a kérdésem van hogy egy oldalór megírtam egy aktivációs scriptet úgy ahogy írták és amikor regisztrálni akartam azt írta ki hogy:
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /disk/raid0/r/o/robinszerogtasa/verify.php on line 42
Parse error: parse error, unexpected T_STRING in /disk/raid0/r/o/robinszerogtasa/verify.php on line 42
Két fáljból áll az egyik register.php:
<html>
<body>
<form action="verify.php" method="post" name="register">
Felhasználónév: <input type="text" name="username" />
Jelszó: <input type="text" name="password" />
Email: <input type="text" name="email" />
<input type="hidden" name="Regisztrálás" value="1"/>
<input type="submit" />
</form>
</body>
</html>
A másik verify.php:
<?php
mysql_connect("sql","ezt most nem írom be","ide most nem íróm be") or die(mysql_error());
mysql_select_db("robinszerogtasa") or die(mysql_error());
if ($_POST['form_submitted'] == '1') {
##User is registering, insert data until we can activate it
$activationKey = mt_rand() . mt_rand() . mt_rand() . mt_rand() . mt_rand();
$username = mysql_real_escape_string($_POST[username]);
$password = mysql_real_escape_string($_POST[password]);
$email = mysql_real_escape_string($_POST[email]);
$sql="INSERT INTO users (username, password, email, activationkey, status) VALUES ('$username', '$password', '$email', '$activationKey', 'verify')";
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
echo "Egy emailt küldtünk a $_POST[email] címre amiben található egy aktiváló kulcs!Kérjük nézze meg a postafiokját és a benne megadott kulcsal(link) aktiválja felhasználóját!";
##Send activation Email
$to = $_POST[email];
$subject = "Robin Szero GTA SA - felhasználó aktiválás!";
$message = "Kedves felhasználónk!\r\r <P>Felhasználó regisztrációs kérésedet fogadtuk.<BR>
Mivel a jelszavakat titkosított formában tároljuk, ha később elfelejtenéd, azt nem tudjuk neked megküldeni.</P>
<P>Regisztrációd aktiválásához klikkelj az alábbi linkre, vagy írd be azt a böngésződ címsorába: \rhttp://www.robinszerogtasa.fw.hu/verify.php?$activationKey\r\r<P>Ha nem te kérted a regisztrációt, hanem valaki a nevedben ennek az email címnek a felhasználásával, akkor semmi dolgod nincs. A nem aktivált regisztrációs kérések bizonyos idő lejártával automatikusan törlődnek.</P>
<P>Üdvözlettel<BR>
Robin Szero GTA SA - Adminisztrációs robot:<BR>
$headers = 'From: robin97##kukac##citromail.hu' . "\r\n" .
'Reply-To: noreply##kukac##robinszerogtasa.fw.hu' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
} else {
##User isn't registering, check verify code and change activation code to null, status to activated on success
$queryString = $_SERVER['QUERY_STRING'];
$query = "SELECT * FROM users";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
if ($queryString == $row["activationkey"]){
echo "Gratulálunk!" . $row["username"] . "Ön büszke új tulajdonosa egy www.robinszerogtasa.fw.hu felhasználónak!";
$sql="UPDATE users SET activationkey = '', status='activated' WHERE (id = $row[id])";
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
}
}
}
?>
A mysql csatlakozás persze helyes(csak itt nem akartam beírni)
Várom az ötleteket és megoldásokat!
■ Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /disk/raid0/r/o/robinszerogtasa/verify.php on line 42
Parse error: parse error, unexpected T_STRING in /disk/raid0/r/o/robinszerogtasa/verify.php on line 42
Két fáljból áll az egyik register.php:
<html>
<body>
<form action="verify.php" method="post" name="register">
Felhasználónév: <input type="text" name="username" />
Jelszó: <input type="text" name="password" />
Email: <input type="text" name="email" />
<input type="hidden" name="Regisztrálás" value="1"/>
<input type="submit" />
</form>
</body>
</html>
A másik verify.php:
<?php
mysql_connect("sql","ezt most nem írom be","ide most nem íróm be") or die(mysql_error());
mysql_select_db("robinszerogtasa") or die(mysql_error());
if ($_POST['form_submitted'] == '1') {
##User is registering, insert data until we can activate it
$activationKey = mt_rand() . mt_rand() . mt_rand() . mt_rand() . mt_rand();
$username = mysql_real_escape_string($_POST[username]);
$password = mysql_real_escape_string($_POST[password]);
$email = mysql_real_escape_string($_POST[email]);
$sql="INSERT INTO users (username, password, email, activationkey, status) VALUES ('$username', '$password', '$email', '$activationKey', 'verify')";
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
echo "Egy emailt küldtünk a $_POST[email] címre amiben található egy aktiváló kulcs!Kérjük nézze meg a postafiokját és a benne megadott kulcsal(link) aktiválja felhasználóját!";
##Send activation Email
$to = $_POST[email];
$subject = "Robin Szero GTA SA - felhasználó aktiválás!";
$message = "Kedves felhasználónk!\r\r <P>Felhasználó regisztrációs kérésedet fogadtuk.<BR>
Mivel a jelszavakat titkosított formában tároljuk, ha később elfelejtenéd, azt nem tudjuk neked megküldeni.</P>
<P>Regisztrációd aktiválásához klikkelj az alábbi linkre, vagy írd be azt a böngésződ címsorába: \rhttp://www.robinszerogtasa.fw.hu/verify.php?$activationKey\r\r<P>Ha nem te kérted a regisztrációt, hanem valaki a nevedben ennek az email címnek a felhasználásával, akkor semmi dolgod nincs. A nem aktivált regisztrációs kérések bizonyos idő lejártával automatikusan törlődnek.</P>
<P>Üdvözlettel<BR>
Robin Szero GTA SA - Adminisztrációs robot:<BR>
$headers = 'From: robin97##kukac##citromail.hu' . "\r\n" .
'Reply-To: noreply##kukac##robinszerogtasa.fw.hu' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
} else {
##User isn't registering, check verify code and change activation code to null, status to activated on success
$queryString = $_SERVER['QUERY_STRING'];
$query = "SELECT * FROM users";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
if ($queryString == $row["activationkey"]){
echo "Gratulálunk!" . $row["username"] . "Ön büszke új tulajdonosa egy www.robinszerogtasa.fw.hu felhasználónak!";
$sql="UPDATE users SET activationkey = '', status='activated' WHERE (id = $row[id])";
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
}
}
}
?>
A mysql csatlakozás persze helyes(csak itt nem akartam beírni)
Várom az ötleteket és megoldásokat!
pár probléma :)
2. A verify.php harmadik sorában (if ($_POST['form_submitted'] == '1')) egy form_submitted nevű változót akarsz leellenőrizni, a probléma csak az, hogy ez a változó nem létezik. A megoldás: a register.php hetedik sorában (<input type="hidden" name="Regisztrálás" value="1"/>) írd át a "Regisztrálás"-t "form_submitted"-re.
3. Ezeket: $_POST[username], $_POST[email], $_POST[password]
cseréld ki ezekre: $_POST['username'], $_POST['email'] és $_POST['password'] !
4. Ha azt akarod, hogy a regisztrációs űrlapon lévő submit gombnak szövege legyen, akkor írd be a type="submit" után ezt: value="Regisztrálás"! (Így fog kinézni: <input type="submit" value="Regisztrálás" />
5. A verify.php közepetáján nem zártad le a $message változó értékadását. (így kéne kinéznie: ...Adminisztrációs robot:<BR>";
Szerk.:
6. Az email szövegéből szedd ki a html címkéket (<P>, </P>, <BR>), helyettük ezt írd: \n vagy \r
7. Az email üzenetben azt írod, hogy a jelszavakat titkosítva tárolod, és ezért nem tudod elküldeni a felhasználónak, ha elfelejtené. Hát csak szólok, hogy a jelszavakat egyáltalán nem titkosítod, úgyhogy én nem szívesen regisztrálnék az oldaladra. (Nem ártana kódolni a jelszót, mielőtt beteszed az adatbázisba...)
8. Egyáltalán nem korlátozod a felhasználó által megadott adatok hosszát, és nem ellenőrzöd, hogy milyen karaktereket írnak be. Pedig hasznos lenne.
Asszem ennyi.