会话变量没有以php和mysql的形式插入数据库

会话变量没有以php和mysql的形式插入数据库,php,html,mysql,session,session-variables,Php,Html,Mysql,Session,Session Variables,它没有插入会话变量,如name、id、email、number等,这些变量存储在pseller.php中的$a、$b、$c、$d中 这是我的登录页面,我在这里检查用户名和密码 login.php $sql=mysql_query("select * from reg where username= '$user' AND password='$pass' AND category='product seller'") or die( mysql_error()); 请帮我从这里出来 $_SE

它没有插入会话变量,如
name、id、email、number等,这些变量存储在
pseller.php中的
$a、$b、$c、$d

这是我的登录页面,我在这里检查用户名和密码

login.php

$sql=mysql_query("select * from reg where username= '$user' 
AND password='$pass' AND category='product seller'") or die( mysql_error());
请帮我从这里出来

$_SESSION['id']=$id;
$_SESSION['phone_no']=$number;
仅当使用用户名和密码选择的行数为1时更新

这些变量在pseller.php中成为变量
$b
$c

因此,如果$user和$pass没有在select from db上为您获取一行,您将在
会话中获得垃圾

mysql\u num\u rows返回行数。你在做极限3。因此,如果您是0、2或3,会话遇到了麻烦。为什么,因为你的if语句说=1

此外,您正在使用一个不推荐使用的mysql函数库,并直接对用户提供的值执行操作,这些值可能导致sql注入攻击。使用mysqli或pdo,然后查看

仅当使用用户名和密码选择的行数为1时更新

这些变量在pseller.php中成为变量
$b
$c

因此,如果$user和$pass没有在select from db上为您获取一行,您将在
会话中获得垃圾

mysql\u num\u rows返回行数。你在做极限3。因此,如果您是0、2或3,会话遇到了麻烦。为什么,因为你的if语句说=1


此外,您正在使用一个不推荐使用的mysql函数库,并直接对用户提供的值执行操作,这些值可能导致sql注入攻击。使用mysqli或pdo,请参阅。

包含
会话启动();在您的
login.php中

$sql=mysql_query("select * from reg where username= '$user' 
AND password='$pass' AND category='product seller'") or die( mysql_error());
在上述查询中,请进行更改

避免在列名中使用空格
category='product seller'

现在回显
SELECT*FROM
查询和
$a、$b、$c、$d
下的值,以了解您是否真的将这些值带入下一页。我很确定你没有,而且@Drew建议,换成
msqli/PDO

编辑:

在你的第二个页面
pseller.php
尝试回显,看看你得到了什么

 echo   $_SESSION['name'];
 echo   $_SESSION['id'];
 echo   $_SESSION['phone_no'];
 echo   $_SESSION['email_id']; 
不走运?好吧,让我们这样试试,看看会发生什么

 $sql=mysql_query("select * from reg where username= '$user' AND password='$pass'") or die( mysql_error());

      if ($sql) {
while($row=mysql_fetch_array($sql))
{
           echo     $row['name'];
           echo     $row['id'];
           echo     $row['phone_no'];
           echo     $row['email_id'];
 }   
    //        header("location:pseller.php");
           }

现在输入正确的用户名和密码(存在于数据库中),如果可以看到回显的值,请使用会话存储并在稍后使用它们,同时取消对
标题()的注释行,您就可以开始了。

包括
会话_start();在您的
login.php中

$sql=mysql_query("select * from reg where username= '$user' 
AND password='$pass' AND category='product seller'") or die( mysql_error());
在上述查询中,请进行更改

避免在列名中使用空格
category='product seller'

现在回显
SELECT*FROM
查询和
$a、$b、$c、$d
下的值,以了解您是否真的将这些值带入下一页。我很确定你没有,而且@Drew建议,换成
msqli/PDO

编辑:

在你的第二个页面
pseller.php
尝试回显,看看你得到了什么

 echo   $_SESSION['name'];
 echo   $_SESSION['id'];
 echo   $_SESSION['phone_no'];
 echo   $_SESSION['email_id']; 
不走运?好吧,让我们这样试试,看看会发生什么

 $sql=mysql_query("select * from reg where username= '$user' AND password='$pass'") or die( mysql_error());

      if ($sql) {
while($row=mysql_fetch_array($sql))
{
           echo     $row['name'];
           echo     $row['id'];
           echo     $row['phone_no'];
           echo     $row['email_id'];
 }   
    //        header("location:pseller.php");
           }

现在输入正确的用户名和密码(存在于数据库中),如果可以看到回显的值,请使用会话存储并在稍后使用它们,同时取消对
标题()的注释行,您可以开始了。

好的,从评论中的问题和讨论来看,您缺少对
login.php中的用户数据的正确处理

在您的代码中还有一些其他的要点:

  • 您不应该使用mysql库,因为它已弃用。您应该使用mysqli,如果您已经习惯了mysql,这是一个相当简单的切换,或者使用PDO
  • 您的代码易受SQL注入攻击。在SQL查询中使用用户输入时,应该使用准备好的语句。更多信息,例如
  • MD5不是一个非常安全的密码选项。你可以读更多
  • 下面是我根据从您的问题中收集到的信息拼凑而成的
    login.PHP
    PHP部分的一个简单示例。对于您的特定数据库结构和需要,它并不完整,但应该可以帮助您解决问题:

    <?php
    
      // Define database connection using mysqli
      $mysqli = new mysqli("localhost", "username", "password", "dbname");
    
      if(isset($_POST['log']))
      {
        $user= $_POST['user'];
        $pass= md5($_POST['pass']); // Should be replaced by secure alternatives
    
        // Define the SQL query string
        $sql = "SELECT id, name, phone_no, email FROM reg WHERE email = ? AND password = ? LIMIT 1";
    
        $stmt = $mysqli->prepare($sql); // Prepare the query string
        $stmt->bind_param("ss", $user, $pass); // Define prepared statement parameters
    
        // Execute the prepared stament
        if ($stmt->execute())
        {
            $result = $stmt->get_result(); // Get the result
    
            $data = $result->num_rows; // Get number of rows
    
            if ($data == 1)
            {
              $userdata = $result->fetch_array(MYSQLI_ASSOC); // Get an associative array from the result
    
              $_SESSION['name'] = $userdata['name'];
              $_SESSION['id'] = $userdata['id'];
              $_SESSION['phone_no'] = $userdata['phone_no'];
              $_SESSION['email_id'] = $userdata['email'];
    
              header("location:pseller.php");
            }
          }
          else
          {
            header("location:login.php?error");
          }
        }
    ?>
    

    好的,从评论中的问题和讨论来看,您缺少对
    login.php
    中的用户数据的正确处理

    在您的代码中还有一些其他的要点:

  • 您不应该使用mysql库,因为它已弃用。您应该使用mysqli,如果您已经习惯了mysql,这是一个相当简单的切换,或者使用PDO
  • 您的代码易受SQL注入攻击。在SQL查询中使用用户输入时,应该使用准备好的语句。更多信息,例如
  • MD5不是一个非常安全的密码选项。你可以读更多
  • 下面是我根据从您的问题中收集到的信息拼凑而成的
    login.PHP
    PHP部分的一个简单示例。对于您的特定数据库结构和需要,它并不完整,但应该可以帮助您解决问题:

    <?php
    
      // Define database connection using mysqli
      $mysqli = new mysqli("localhost", "username", "password", "dbname");
    
      if(isset($_POST['log']))
      {
        $user= $_POST['user'];
        $pass= md5($_POST['pass']); // Should be replaced by secure alternatives
    
        // Define the SQL query string
        $sql = "SELECT id, name, phone_no, email FROM reg WHERE email = ? AND password = ? LIMIT 1";
    
        $stmt = $mysqli->prepare($sql); // Prepare the query string
        $stmt->bind_param("ss", $user, $pass); // Define prepared statement parameters
    
        // Execute the prepared stament
        if ($stmt->execute())
        {
            $result = $stmt->get_result(); // Get the result
    
            $data = $result->num_rows; // Get number of rows
    
            if ($data == 1)
            {
              $userdata = $result->fetch_array(MYSQLI_ASSOC); // Get an associative array from the result
    
              $_SESSION['name'] = $userdata['name'];
              $_SESSION['id'] = $userdata['id'];
              $_SESSION['phone_no'] = $userdata['phone_no'];
              $_SESSION['email_id'] = $userdata['email'];
    
              header("location:pseller.php");
            }
          }
          else
          {
            header("location:login.php?error");
          }
        }
    ?>
    
    
    
    您的第二个区块没有显示任何信息表明v_id和v_编号不是0$b$c。做一个类似于。。我没有理解你的意思。在你的login.php中尝试添加会话_start();在顶部,一旦开始,您就可以设置变量(您已经在页面上做了进一步的设置),当您调用pseller.php并启动会话时,变量将转移到上面,$b是第一个,$c是第二个变量我在页面的前面部分打开了会话_start()。。所以这不是错误,兄弟@BenjayHuttony第二个区块没有显示任何信息表明v_id和v_编号不是0$b$c。做一个类似于。。我没有理解你的意思。在你的login.php中尝试添加会话_start();在顶部,一旦启动,就可以设置