如何在PHP中调试“调用未定义的函数session_register()”?

如何在PHP中调试“调用未定义的函数session_register()”?,php,mysql,sql,login,Php,Mysql,Sql,Login,我已经用php创建了一个基本的登录名。感谢您的帮助,我已修复了以前的错误,但我现在在第36行收到一个新错误: 在第36行的/Applications/XAMPP/xamppfiles/htdocs/game development/checklogin.php中调用未定义的函数session_register 我不知道为什么。有没有办法解决这个问题 <?php ob_start(); $host="localhost"; // Ho

我已经用php创建了一个基本的登录名。感谢您的帮助,我已修复了以前的错误,但我现在在第36行收到一个新错误:

在第36行的/Applications/XAMPP/xamppfiles/htdocs/game development/checklogin.php中调用未定义的函数session_register

我不知道为什么。有没有办法解决这个问题

    <?php

            ob_start();
            $host="localhost"; // Host Name 

            $username="root"; // Mysql Username

            $password=""; // Mysql Password 

            $db_name="DylansDB"; // Database Name 

            $tbl_name="members";

            // Connect to server and select databse.
            mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
            mysql_select_db("$db_name")or die("cannot select DB");

            // Define $myusername and $mypassword 
            $myusername=$_POST['myusername']; 
            $mypassword=$_POST['mypassword']; 

            // To protect MySQL injection
            $myusername = stripslashes($myusername);
            $mypassword = stripslashes($mypassword);
            $myusername = mysql_real_escape_string($myusername);
            $mypassword = mysql_real_escape_string($mypassword);
            $sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
            $result=mysql_query($sql);

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

            // If result matched $myusername and $mypassword, table row must be 1 row
            if($count==1){

            // Register $myusername, $mypassword and redirect to file "login_success.php"
            session_register("myusername");
            session_register("mypassword"); 
            header("location:login_success.php");
            }
            else {
            echo "Wrong Username or Password";
            }
            ob_end_flush();
   ?>

原始的MySQL扩展现在已弃用,并且在连接到数据库时将生成E_弃用错误。相反,使用MYSQLi或PDO_MySQL扩展

使用mysqli prepared语句避免sql注入

1检查您的mysql用户权限

<?php

        session_start();

        global $conn;

        $servername = "localhost";  //host name

        $username = "username"; //username

        $password = "password"; //password

        $mysql_database = "dbname"; //database name

    //mysqli prepared statement 

        $conn = mysqli_connect($servername, $username, $password) or die("Connection failed: " . mysqli_connect_error());

       mysqli_select_db($conn,$mysql_database) or die("Opps some thing went wrong");



        // Define $myusername and $mypassword 
        $myusername=$_POST['myusername']; 
        $mypassword=$_POST['mypassword']; 

        // To protect MySQL injection
        $myusername = stripslashes($myusername);
        $mypassword = stripslashes($mypassword);
        $myusername = mysql_real_escape_string($myusername);
        $mypassword = mysql_real_escape_string($mypassword);

        $tbl_name="members"; // Table name 


       $stmt = $conn->prepare("SELECT * FROM $tbl_name WHERE username=? and password=? ");

            $stmt->bind_param('ss',$myusername,$mypassword);

            $stmt->execute();
            $get_result =$stmt->get_result();

            $row_count= $get_result->num_rows;

            if($row_count>0)
            {

                // If result matched $myusername and $mypassword, table row must be 1 row
                $final_result =$get_result->fetch_assoc();

                $_SESSION['myusername']=$final_result['username'];

                header("location:login_success.php");
                exit();

            }
            else 
            {
                echo "Wrong Username or Password";
            }

            $stmt->close();
             $conn->close();


        ob_end_flush();
         ?>
不再有功能会话_寄存器;从PHP5.3.0开始,它就被弃用了,并从PHP5.4.0中完全删除了。为此,您应该使用$\u SESSION[]superglobal


您还遇到了评论中提到的所有问题。

停止使用mysql方法。它们已被弃用且不安全。切换到mysqli_*或PDO!原始的MySQL扩展现在已弃用,并且在连接到数据库时将生成E_弃用错误。相反,请使用MYSQLi或PDO_MySQL扩展。您的查询包含许多错误。如果您连接到数据库服务器,则可能会出现错误,但在选择数据库“dylandb”时遇到问题。您的用户是否至少具有从该数据库读取SELECT的正确权限?说。即使是这样也不安全!down vote是可以接受的,有充分的理由down vote是因为您假设用户必须是“root”第1点。我说的必须是root?我说的用户名必须是root。我没有说必须是root。看那里@Progrock“username must或use default root user”,这句话是非常荒谬和误导的。虽然这段代码可能回答了这个问题,提供关于为什么和/或如何回答该问题的额外背景将显著提高其长期价值。请你的回答加上一些解释。我已经解决了上面的各种问题。我现在在第36行收到一个致命错误-'第36行调用未定义的函数session_register in/Applications/XAMPP/xamppfiles/htdocs/game development/checklogin.php'我不知道为什么。有关如何修复此问题的任何想法?会话\注册已弃用。请使用会话\启动$_会话['myusername']=$myusername;
<?php

        session_start();

        global $conn;

        $servername = "localhost";  //host name

        $username = "username"; //username

        $password = "password"; //password

        $mysql_database = "dbname"; //database name

    //mysqli prepared statement 

        $conn = mysqli_connect($servername, $username, $password) or die("Connection failed: " . mysqli_connect_error());

       mysqli_select_db($conn,$mysql_database) or die("Opps some thing went wrong");



        // Define $myusername and $mypassword 
        $myusername=$_POST['myusername']; 
        $mypassword=$_POST['mypassword']; 

        // To protect MySQL injection
        $myusername = stripslashes($myusername);
        $mypassword = stripslashes($mypassword);
        $myusername = mysql_real_escape_string($myusername);
        $mypassword = mysql_real_escape_string($mypassword);

        $tbl_name="members"; // Table name 


       $stmt = $conn->prepare("SELECT * FROM $tbl_name WHERE username=? and password=? ");

            $stmt->bind_param('ss',$myusername,$mypassword);

            $stmt->execute();
            $get_result =$stmt->get_result();

            $row_count= $get_result->num_rows;

            if($row_count>0)
            {

                // If result matched $myusername and $mypassword, table row must be 1 row
                $final_result =$get_result->fetch_assoc();

                $_SESSION['myusername']=$final_result['username'];

                header("location:login_success.php");
                exit();

            }
            else 
            {
                echo "Wrong Username or Password";
            }

            $stmt->close();
             $conn->close();


        ob_end_flush();
         ?>