如何在PHP中调试“调用未定义的函数session_register()”?
我已经用php创建了一个基本的登录名。感谢您的帮助,我已修复了以前的错误,但我现在在第36行收到一个新错误: 在第36行的/Applications/XAMPP/xamppfiles/htdocs/game development/checklogin.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
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();
?>