2016-10-07 4 views
-3

У меня возникли проблемы с автоматической регистрацией на странице моей учетной записи после регистрации. Пожалуйста, помогите, вот мой код. Я пытаюсь войти в систему без какого-либо подтверждения по электронной почте.Авто Войти после регистрации PHP

<?php 
    @ob_start();session_start(); 

    if($_SESSION['LOGIN_ID'] > 0) 
    header("location:myaccount.php"); 

    $invalidcaptcha = 0; 
    if($_POST['register_submit']) 
    { 

     $ip = getIP();  
     $emailid = $_POST['emailid']; 
     $pwd = $_POST['pwd']; 
     $confirm = '1'; 
     $blocked = '0'; 
     $ccode = base64_encode($email); 

     $ures = mysql_query("select id from user where emailid='".mysql_real_escape_string($_POST['emailid'])."'"); 
     if(mysql_num_rows($ures) > 0) 
     { 
      header("location:login.php?emailexist=1"); 
     } 
     else if($_POST['security_code']==$_SESSION['freecap_word_hash']) 
     {  
      mysql_query("insert into user set emailid='".mysql_real_escape_string($emailid)."',pwd='".md5($pwd)."',blocked='".$blocked."',confirm='".$confirm."',ccode='".$ccode."',reg_date=now(),reg_ip='".$ip."'"); 
      $i_id = mysql_insert_id(); 

      $res=mysql_query("SELECT id, emailid, pwd FROM users WHERE emailid='$emailid'"); 
     $row=mysql_fetch_array($res); 
     $count = mysql_num_rows($res); // if uname/pass correct it returns must be 1 row 

     $_SESSION['LOGIN_ID'] = $row['userId']; 
     header("Location: myaccount.php"); 

     } 

    } 

    ?> 
+3

кроме вашей зияющей широко открытой [sql injection attack] (http://bobby-tables.com) уязвимости, точно ** КАК ** этот код не работает? –

+0

, так что вы хотите, чтобы мы просмотрели весь ваш код и отлаживали его/проверяли, не так ли? Не говоря уже о недостающем HTML для этого. Кроме того, что касается «jquery», то что? –

+0

'$ row ['userId']' = '$ i_id' не нужно использовать второй запрос select – devpro

ответ

1

Вы используете userid здесь

$_SESSION['LOGIN_ID'] = $row['userId']; 

И не используя столбец USERID в запросе на выборку.

Помимо этой проблемы, $ i_id равен $ row ["userId"], чем нет необходимости использовать второй SELECT QUERY.

В вашем случае вам просто нужно добавить столбец USERID в этом запросе:

SELECT id, emailid, pwd, userId FROM 

Но этот запрос является дополнительным, как я уже говорил.

Это еще один особый момент, прекратите использование mysql_ * его устаревшего и закрытого в PHP 7, вы можете использовать mysqli_ * или PDO.

Лучше использовать подготовленный оператор, это сохранит ваш код с помощью SQL Injection.

+0

can u plz post точная линия, это будет отличная помощь –

+0

OK thanksresolved –

+0

@ rajat-gupta u вам нужно добавить столбец userId в свой запрос, но этот запрос является дополнительным – devpro

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