webForumDet fria alternativet

Glömt lösenord funktion, vad blir fel?

PHP

3 svar · 718 visningar · startad av smileenergy

Medlem sedan jan. 200781 inlägg
Frågan#1

Hej...
Jag har försökt fixa så att man ska få ett nytt lösenord utslumpat när man har fyllt i epost och användarnamn men jag har inte riktigt lyckats få det att fungera. Så skulle nu gärna vilja få lite hjälp utav er och se om ni kan hjälpa mig att få det att fungera... ?

Felet jag får upp är följande:

 Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in /home/..../public_html/logintest/forgetpass.php on line 20

Koden för forgetpass.php

<? session_start(); // Alltid överst på sidan  include "conn.php"; // Databasanslutningen include "functions.php"; // Funktioner   //Skapa nytt lösenord       $bokstav = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "2", "3", "4", "5", "6", "7", "8", "9");       $antal = count($bokstav);       $password = "";       for ($j = 0; $j < 6; $j++) {         $slump = rand(0, ($antal - 1));         $password.= $bokstav[$slump];       } $passwd = safepass($password); mysql_query("UPDATE members SET pass = '$passwd' WHERE user='{$_POST['user']}'");   $result = mysql_query("SELECT email FROM members WHERE user='{$_POST['user']}'");             $email = mysql_result($result, 0);                       $user = $_POST['user'];                     //Mail          $headers  = "MIME-Version: 1.0\r\n";          $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";          $headers .= "From: ADMIN <info@test.se>\r\n";              $amne  = "Nytt lösenord.";               $text  = "Hej!\n";             $text .= "Du har begärt att få ditt användarnamn och\n";             $text .= "lösenord mailat.\n";             $text .= "Om du inte har begärt detta så kasta detta mail.\n";             $text .= "\n";             $text .= "Din information:\n";             $text .= "=====================================\n";             $text .= " Användarnamn: $user\n";             $text .= " Lösenord:     $password\n";             $text .= "=====================================\n";             $text .= "\n";             $text .= "/ Mvh Admin\n";               mail($email, $amne, $text, $headers);           //Slut Mail 		  ?>  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Glömt lösenord</title> </head> <body> <form action="index.php" method="post"> Användarnamn:<br> <input type="text" name="user"><br> Email:<br> <input type="email" name="email"><br> <input type="submit" name="submit" value="Logga in"> </form> </body> </html>
Medlem sedan juni 20031 837 inlägg
#2

Din kod är ganska oläsbar men verkar som det har att göra med sql-frågan som hämtar ut mail-adressen.

är du säker på att följande rad ger korrekt sql-sats?

$result = mysql_query("SELECT email FROM members WHERE user='{$_POST['user']}'");

testa att skriva ut sql-satsen med echo så att du ser att den blir rätt.

Medlem sedan jan. 200781 inlägg
#3

Hej!
Jo jag är säker på att det där blir rätt där...

Medlem sedan maj 20012 237 inlägg
#4

OT:

Kom ihåg att man ALDRIG, ALDRIG ska sätta in värden från en användare direkt i en SQL-fråga (SQJ INJECTION!).

NEJ:

$sql = "SELECT * FROM foo WHERE user = '$_POST['user']'";

JA

$user = mysql_real_escape_String($_POST['user']);
$sql = "SELECT * FROM foo WHERE user = '$user'";

Du bör säkra (escape) datan innan den används i en SQL-fråga.

PHP har t ex mysql_real_escape_String (http://fi.php.net/manual/en/function.mysql-real-escape-string.php)

för detta ändamål men jag rekommenderar skarpt att du kör med PDO eller liknande om erbjuder prepared statements.

259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)