用PHP注册电子邮件和密码后无法登录

时间:2016-04-13 06:27:51

标签: php jquery mysql

这是我的注册部分代码。

 <?php
              include_once('config.php');
                 $uname=mysql_real_escape_string($_POST["fname"]);
              $email = mysql_real_escape_string( $_POST["email"] );
              $phone=mysql_real_escape_string($_POST["phone"]);
              $country = mysql_real_escape_string( $_POST["country"] );
              $region = mysql_real_escape_string( $_POST["region"] );
              $zip = mysql_real_escape_string($_POST["zip"]) ;
              $upass = mysql_real_escape_string( md5($_POST["password"]) );



              if( empty($uname) || empty($email) || empty($phone) || empty($country) || empty($region) || empty($zip) || empty($upass)  )
              {
                echo "all fields are mandatory - from PHP!";
                exit();
              }


         $res = mysql_query("SELECT email FROM registration WHERE email='$email'");
              $row = mysql_num_rows($res);

              if( $row > 0 ){
                echo "email $email has already been taken";
              }
              else
              {
                  $sql = mysql_query("INSERT INTO registration (fname,email,phone,country,region,zip,password)VALUES(
                                                   '$uname', 
                                                   ' $email', 
                                                   '$phone', 
                                                   '$country',
                               '$region',
                               '$zip',
                               '$upass' )");

                if($sql){
                 echo "Inserted Successfully";
                }
               else
                 echo "Insertion Failed";
            }
        ?>

这是我登录php的代码....

<?php
session_start();
        include_once('config.php');
        $email = mysql_real_escape_string( $_POST["email"] );
        $password = mysql_real_escape_string( md5($_POST["password"]) );

        if( empty($email) || empty($password) ){
            echo "Email and Password Mandatory ";
        }
        else
        {
            $sql = mysql_query("SELECT fname FROM registration WHERE(
                       email='$email' 
                    AND 
                    password='$password')");
            while($row = mysql_fetch_array($sql)){
                $_SESSION['user_name'] =  $row['fname'];
            }
                //$res = mysql_query($sql);
        //$row = mysql_fetch_array($res);
        if( $_SESSION['user_name']!= '' )
         echo "<script>location.href='../index.php?con=1'</script>";
        else
         echo "Failed To Login";
        }       
?>

登录后出现错误......

注意:未定义的索引:第21行的C:\ xampp \ htdocs \ cinderella \ php \ login.php中的user_name     登录失败//

**这个问题的任何领导都非常明显......谢谢**

4 个答案:

答案 0 :(得分:2)

检查您的插入查询,$email字段中有一个空格。

$sql = mysql_query("INSERT INTO registration (fname,email,phone,country,region,zip,password)VALUES(
                           '$uname', 
        WHITESPACE ------> ' $email',
                           '$phone', 
                           '$country',` 

答案 1 :(得分:1)

在INSERT查询中删除电子邮件前的空格。

其次,我建议您在获取之前使用num_rows来检查用户帐户是否存在。尝试:

if(mysql_num_rows($sql) == 0) echo "Failed to login!";
else {
    $fetch = mysql_fetch_array($sql);
    $_SESSION['user_name'] = $fetch['fname'];
}

另外我建议你使用MySQLi。您可以对此OO进行编程,以便更好地了解它。您还可以使用预准备语句,交易......

答案 2 :(得分:0)

如果$_SESSION['user_name']中不存在该数组键,则$_SESSION的测试将产生该通知(例如,当您尚未登录时)。尝试更改:

if( $_SESSION['user_name']!= '' )

if (array_key_exists('user_name', $_SESSION))

答案 3 :(得分:0)

你的整个代码已经完成了。

mysql_real_escape_string上执行md5($_POST["password"])。如果你倒了就好多了。

使用已被删除的mysql查询。应该使用mysqli

为要插入的变量分配值。可以检查isset($_POST['username']) && !empty($_POST['username'])

并且,正如其他几个人所提到的那样,'$ email'中有一个空格

相关问题