ugrás a tartalomhoz

Aktivációs hiba

robin97 · 2009. Aug. 31. (H), 17.32
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!
 
1

pár probléma :)

rockybro · 2009. Aug. 31. (H), 19.52
1. Megköszönnénk, ha használnád a kódszínezőt!

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.