【问题标题】:Can't use function return value in write context Php Using $_Session无法在写入上下文 PHP 中使用函数返回值使用 $_Session
【发布时间】:2015-06-09 18:22:29
【问题描述】:

我正在为我正在开发的网站开发登录功能,我正在尝试使用会话方法,但我不断收到错误“致命错误:无法在写入上下文中使用函数返回值。 "有什么想法吗?

<?php
            $db_name="name"; // Database name 
            // Connect to server and select databse.
            mysql_connect("xxxxxxx","xxxx","xxxxxx")or die("cannot connect"); 
            mysql_select_db($db_name)or die("cannot select DB");
            // username and password sent from form 
            $username=$_POST['username']; 
            $password=$_POST['password']; 

            // To protect MySQL injection (more detail about MySQL injection)
            $myusername = stripslashes($username);
            $mypassword = stripslashes($password);
            $myusername = mysql_real_escape_string($username);
            $mypassword = mysql_real_escape_string($password);
            $sql1="SELECT * FROM `professionals` WHERE username='$username'";
            $sql2="SELECT * FROM `professionals` WHERE password='$password'";
            $result1=mysql_query($sql1);
            $result2=mysql_query($sql2);

            // Mysql_num_row is counting table row
            $count=mysql_num_rows($result1);

            // If result matched $myusername and $mypassword, table row must be 1 row
            if($count==1){
                $_SESSION("username")=$result1;
                $_SESSION_("password")=$result2; 
                header("location:Success.html");
            }
            else {
                echo "Wrong Username or Password";
                header("location:Failed.html");
            }
        ?><?php
            $db_name="name"; // Database name 

            // Connect to server and select databse.
            mysql_connect("xxxxxxx","xxxx","xxxxxx")or die("cannot connect"); 
            mysql_select_db($db_name)or die("cannot select DB");
            // username and password sent from form 
            $username=$_POST['username']; 
            $password=$_POST['password']; 

            // To protect MySQL injection (more detail about MySQL injection)
            $myusername = stripslashes($username);
            $mypassword = stripslashes($password);
            $myusername = mysql_real_escape_string($username);
            $mypassword = mysql_real_escape_string($password);
            $sql1="SELECT * FROM `professionals` WHERE username='$username'";
            $sql2="SELECT * FROM `professionals` WHERE password='$password'";
            $result1=mysql_query($sql1);
            $result2=mysql_query($sql2);

            // Mysql_num_row is counting table row
            $count=mysql_num_rows($result1);

            // If result matched $myusername and $mypassword, table row must be 1 row
            if($count==1){ //Write Username and Password goes to page
                $_SESSION("username")=$result1;
                $_SESSION_("password")=$result2; 
                header("location:Success.html");
            }
            else {
                echo "Wrong Username or Password"; //Wrong Password goes to error page
                header("location:Failed.html");
            }
        ?>

【问题讨论】:

  • 另一件事,您不应该将密码存储在会话中。
  • 是 session_start();在页面的第一行

标签: php mysql session login


【解决方案1】:

$_SESSION 是一个数组,而不是一个函数。您尝试在此处将其用作后者:

$_SESSION("username")=$result1;
$_SESSION_("password")=$result2; 

您需要按如下方式更新您的代码:

$_SESSION["username"] = $result1;
$_SESSION["password"] = $result2; 

您的代码还有许多其他错误:

  1. mysql_*() 函数现已弃用。你应该考虑 升级您的代码以使用MySQLiPDO

  2. 我在您的代码中看不到对 session_start() 的任何调用。这是 当您希望处理用户会话时需要。

【讨论】:

  • 谢谢先生,php 现在可以正常工作了!我不知道 mysql_() 函数被贬值了。
【解决方案2】:

这很可能是问题

$_SESSION("username")=$result1;
$_SESSION_("password")=$result2;

应该是

$_SESSION["username"] = $result1;
$_SESSION["password"] = $result2;

【讨论】:

    猜你喜欢
    • 2011-04-22
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多