会话变量没有以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();在顶部,一旦启动,就可以设置