Har kollat igenom detta felra gånger, men jag hittar inte felet. får undexpected $end som felmeddelande:
if (($HTTP_POST_VARS['command'] == 'forgot') && strlen($_POST['email'] <= 50)) {
$as_email = addslashes($_POST['email']);
$query = "SELECT id FROM anvandare WHERE mail = '$as_email'";
$result=mysql_query($query);
$is_user = mysql_num_rows($result);
if ($is_user == 1) {
$alphanum = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','X','Y','Z','1','2','3','4','5','6','7','8','9');
$chars = sizeof($alphanum);
$a = time();
mt_srand($a);
for ($i=0; $i < 7; $i++)
{
$randnum = intval(mt_rand(0,56));
$pwd .= $alphanum[$randnum];
}
$enc_pass = md5($pwd);
$query = "UPDATE anvandare SET losen = '$enc_pass' WHERE mail = '$as_email'";
$result = mysql_query($query) or die ('Det gick inte att uppdatera databasen med det nya lösenordet');
$to = $_POST['email'];
$subject = "Nytt lösenord för sidan";
$msg = <<<EOMSG
Här kommer ditt nya lösenord för ditt konto.
Vi uppmanar dig att byta till ett personligare lösenord så fort du loggat in med detta.
Ditt nya lösenord är: $pwd
För att ändra lösenord, kika under din profil på sidan.
EOMSG;
mail($to, $subject, $msg, 'From: email');
header("Location: index.php");
}
else {
// hhh
Echo "wrong";
}
}
$msg = "Här kommer ditt nya lösenord för ditt konto.
Vi uppmanar dig att byta till ett personligare lösenord så fort du loggat in med detta.
Ditt nya lösenord är: $pwd
För att ändra lösenord, kika under din profil på sidan.";
En annan sak... du åker förmodligen på dubbla escapes i och med detta:
$as_email = addslashes($_POST['email']);
Från php-manualen under addlashes:
The PHP directive magic_quotes_gpc is on by default, and it essentially runs addslashes() on all GET, POST, and COOKIE data. Do not use addslashes() on strings that have already been escaped with magic_quotes_gpc as you'll then do double escaping. The function get_magic_quotes_gpc() may come in handy for checking this.
Istället kan du använda mysql_real_escape_string och den här funktionen som är hämtad från php-manualen under just mysql_real_escape_string:
<?php
// Quote variable to make safe
function quote_smart($value)
{
// Stripslashes
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
// Quote if not integer
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());
// Make a safe query
$query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s",
quote_smart($_POST['username']),
quote_smart($_POST['password']));
mysql_query($query);
?>