2015-01-10 3 views
-2

Я хотел создать страницу забытого пароля. Чтобы избежать рассылки пользователю своих данных, я решил отобразить его данные в окне предупреждения, хотя я знаю, что он гораздо менее безопасен!забыли пароль в php

Итак, вот мой код в файле php «forgetdetails.php».

//Here are my database details, which I can't show. 

$conn= mysql_connect($dbhost, $dbuser, $dbpass); 
    // Check connection 

    if(!$conn){ 
     die('Could not connect'.mysql_error()); 
    } 

    $db_selected = mysql_select_db('users'); 

    if(!$db_selected){ 
     die('wrong'.mysql_error()); 
    } 



    $post_username = $_POST['email']; // the ajax post username 


    $query = "SELECT * FROM users WHERE id='". $post_username. "'"; 
    $results= mysql_query($query); 
    $row=mysql_fetch_assoc($results); 
    $username=$row['id']; 
    $password=$row['pass']; 
    if(mysql_num_rows($results)==0) 
    { 
     echo "pass= " . $password; 
     echo "You haven't registered yet! Go to the Home-Page to Register!"; 
    /*$query = "SELECT * FROM users WHERE id='$post_username' AND pass='$post_password'";*/ 

    } 
    else 
    { 
     echo $password; 
    echo "Your Login details are-:"."\nUser ID- ". $username . "\nPassword- ". $password . "\nLogin to your account, to change your password. "; 

    } 

А вот моя Аякса функция (внутри HTML-файла), который вызывался как кнопка забыл пароль clicked-:

<script lang="javascript" type="text/javascript"> 


    function ajaxFunction1() { 
     var ajaxRequest; // The variable that makes Ajax possible! 

     try { 
      // Opera 8.0+, Firefox, Safari 
      ajaxRequest = new XMLHttpRequest(); 
     } catch (e) { 
      // Internet Explorer Browsers 
      try { 
       ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
      } catch (e) { 
       try { 
        ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
       } catch (e) { 
        // Something went wrong 
        alert("Your browser broke!"); 
        return false; 
       } 
      } 
     } 
     // Create a function that will receive data 
     // sent from the server and will update 
     // div section in the same page. 
      ajaxRequest.onreadystatechange = function() 
      { if (ajaxRequest.readyState == 4) 
       { var ajaxDisplay = document.getElementById('results'); 
       alert (ajaxRequest.responseText); 
       ajaxDisplay.innerHTML = "<br/><br/><h2><font color='#18E618'>"+ajaxRequest.responseText+"</font></h2>"; } } 


     // Now get the value from user and pass it to 
     // server script. 
     var email = document.getElementById('email').value; 
     //var bitsmailid = document.getElementById('bitsmailid').value; 

     if (email== "" || email== null || email== '') { 

      alert("BITS ID Not Filled"); 

      exit(); 
     } 
     /*if (bitsmailid== "" || bitsmailid== null || bitsmailid== '') { 

      alert("BITS Mail ID Not Filled"); 

      exit(); 
     }*/ 


     var queryString = "?email=" + email; 
     ajaxRequest.open("POST", "forgotdetails.php" +queryString, true); 

     ajaxRequest.send(null); 
    } 

</script> 

Мой запрос является то, что, то мне нужно проверить, является ли запрос, возвращаемый через SQL в PHP-файле ($ results), пуст или нет, а затем мне нужно выполнить функции, как я упомянул в своем коде. Я использовал условие mysql_num_rows ($ results) == 0 (которое я узнал после прочтения подобных сообщений в Stack Overflow). Хотя, похоже, это не так правильно. Он всегда проверяет true, даже если в базе данных есть записи.

Я прочитал все сообщения, касающиеся этого типа вопросов о переполнении стека, и после 12 часов тестирования кода с множеством различных возможностей, я все еще не могу решить свой запрос. Я предоставил все детали, необходимые для моего запроса, однако, если кому-то нужно что-либо, я предоставил их вам.

Я новичок в веб-разработке, поэтому, пожалуйста, помогите мне решить мой запрос. Заранее спасибо за вашу помощь!

Прошу прощения, если вы чувствуете, что на этот вопрос уже был дан ответ ранее, однако я опубликовал это снова, потому что эти должности, к сожалению, не могли мне помочь. Я прочитал их все. Сожалею!

+0

Вы сохраняете электронную почту столбца 'id'? –

+0

@ JozefDúc: Да! –

+0

Вы храните пароли в виде обычного текста? – MisterBla

ответ

0

Это должно быть

$sql = "SELECT * FROM users WHERE id='". $post_username. "'"; 
$result = mysql_query($sql, $conn); 
if ($result && (mysql_num_rows($result) > 0)) { 
    // user exists 
    // here you get row 
    $row = mysql_fetch_assoc($result); 
} 

Я знаю, что это не PDO, и это небезопасно.

+0

Тем не менее, условие никогда не оценивает true и всегда оценивает значение false. Я попробовал это сейчас. –

+0

Является ли ваш db посеянным? Каков результат скрипта? Это заканчивается ошибкой или чем-то еще? –

+0

Почему id = указать имя пользователя, имена пользователей обычно не являются идентификаторами, глядя на OP id = username = email. Возможно, это правильно, но это плохо читается. – ArtisticPhoenix

Смежные вопросы