2013-06-12 5 views
0

Ниже приведен код подтверждения по электронной почте для моего сайта.проверка подлинности php не работает?

Проверка URL отправлен на адрес электронной почты пользователя выглядит следующим образом: http://www.mywebsite.com/valid.php?confr=2774405&userid=2

Дополнительные примечания:

1) key столбец в моей базе данных, которая получает случайное значение по регистрации.

2) если $verify == 1 и password_in_db=== user_entered_password, то вход в систему осуществляется на странице входа.

<?php 

    include 'connect.php'; 

    $query = mysql_query("SELECT verify,key FROM users WHERE id = '$_GET['userid']'"); 
    $details = mysql_fetch_assoc($query); 
    $verify = $details['verify']; 
    $confirm2 = $details['key']; 

    if($verify == "1") { 
     echo "Link Expired . Go to our login page :"; 
    } else { 
     if (isset($_GET["confr"]) && isset($_GET["userid"])) { 
      $confirm1 =$_GET["confr"]; 

      if($confirm1 == $confirm2) { 
       mysql_query("INSERT INTO users (`verify`) VALUES ('1') WHERE id = '$_GET["userid"]' ;"); 
       echo "Thank You For Registering with us . Go to your LOGIN PAGE Here "; 
      } else { 
       echo "Invalid link "; 
       echo "Go to your LOGIN PAGE Here "; 
      } 
     } // of if isset 
    } // of else part 
?> 

Код для connect.php

<?php 
    mysql_connect("host", "username", "pass"); //connects to the server 
    mysql_select_db("database_name"); //selects the database 
?> 

Проблема заключается в том, что она дает мне пустой экран.

+1

'mysql_query ("INSERT INTO пользователей (\ 'проверить \') VALUES ('1') WHERE ID = «$ _GET [" идентификатор пользователя "] ';"); 'довольно уверен, что вы не можете этого сделать –

+2

Это должно быть' mysql_query ("INSERT INTO users (\' verify \ ') VALUES (' 1 ') WHERE id ='". $ _ GET [ userid "]." '; ");'. –

+1

Ваш код отлично подходит для хакера (плохой парень), потому что вы не избегаете запроса ($ _GET), а это значит, что его уязвимость для SQL-инъекции –

ответ

0

я считаю, что ошибка заключается в SQL

когда-либо я использую «WHERE» заявление я всегда определить в качестве переменной, попробуйте этот

<?php 
include 'connect.php'; 
$user_id = $_GET["userid"]; 
$query = mysql_query("SELECT verify,key FROM users WHERE id = '$user_id'"); 
$details = mysql_fetch_assoc($query); 
$verify = $details['verify']; 
$confirm2 = $details['key']; 
if($verify == "1"){ 
echo "Link Expired . Go to our login page :"; 
} 
else{ 
if (isset($_GET["confr"]) && isset($_GET["userid"])) 
{ 
$confirm1 =$_GET["confr"]; 
if($confirm1 == $confirm2){ 

mysql_query("INSERT INTO users (`verify`) VALUES ('1') WHERE id = '$user_id'"); 

echo "Thank You For Registering with us . Go to your LOGIN PAGE Here "; 
} 
else { 
echo "Invalid link "; 
echo "Go to your LOGIN PAGE Here "; 
} 
} // of if isset 
} // of else part 

?> 

также, у вас есть с запятой в вставить SQL

+0

Теперь $ confirm2 = $ details ['key']; не дает никакого вывода – Sarang

+0

Вам не хватает цикла while, а ther - данные для сбора, он будет продолжать, без «while» он получает только 1 результат $ query = mysql_query («SELECT verify, key FROM пользователей WHERE id = '$ user_id' "); while ($ details = mysql_fetch_assoc ($ query)) { $ verify = $ details ['verify']; $ confirm2 = $ details ['key']; } –

0

Попробуйте это .......

<?php 
include 'connect.php'; 

$user_id = $_GET["userid"]; 
$query = mysql_query("SELECT verify,key FROM users WHERE id = '$user_id'"); 
    while ($details = mysql_fetch_assoc($query)){ 
     $verify = $details['verify']; 
     $confirm2 = $details['key']; 
    } 
if($verify == "1"){ 
    echo "Link Expired . Go to our login page :"; 
} 
else{ 
    if (isset($_GET["confr"]) && isset($_GET["userid"])) 
{ 
    $confirm1 =$_GET["confr"]; 
    if($confirm1 == $confirm2){ 

mysql_query("INSERT INTO users (`verify`) VALUES ('1') WHERE id = '$user_id'"); 

echo "Thank You For Registering with us . Go to your LOGIN PAGE Here "; 
} 
else { 
echo "Invalid link "; 
echo "Go to your LOGIN PAGE Here "; 
    } 
    } // of if isset 
} // of else part 

?> 
0

Примечание: вкладыш заявление не имеет где - в качестве пока вы не использовать "вставить в выберите ..."

http://dev.mysql.com/doc/refman/5.1/de/insert.html

+0

Теперь код начал работать, но mysql_query ie mysql_query ("INSERT INTO users (verify) VALUES ('1') WHERE id = '$ userid';"); не работает. Можете ли вы дать мне предложение – Sarang

+0

Как сказано выше, вставки нет, поэтому он должен быть «вставлять в значения (« 1 ») пользователей». Но я думаю, что вы не хотите вставлять строку, но обновляете ее: 'update users set verify = '1' где id =". $ Userid. ";" ' – bish

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