Php 登录功能似乎无法正常运行
我已经坐在这里思考了整整30分钟了,我只是不知道出了什么问题 我添加了打印,但它似乎没有正确地联系数据库,或者没有正确地从数据库中提取数据Php 登录功能似乎无法正常运行,php,mysql,session,Php,Mysql,Session,我已经坐在这里思考了整整30分钟了,我只是不知道出了什么问题 我添加了打印,但它似乎没有正确地联系数据库,或者没有正确地从数据库中提取数据 $conf['sql_host'] = 'localhost'; $conf['sql_user'] = 'root'; $conf['sql_pass'] = ''; $conf['sql_data'] = 'c_webauth'; mysql_connect( $conf['sql_host'], $conf['sql_user'], $con
$conf['sql_host'] = 'localhost';
$conf['sql_user'] = 'root';
$conf['sql_pass'] = '';
$conf['sql_data'] = 'c_webauth';
mysql_connect( $conf['sql_host'], $conf['sql_user'], $conf['sql_pass'] ) or die( 'Connection failed: '.mysql_error() );
mysql_select_db( $conf['sql_data'] );
function login( $user, $pass ){
session_regenerate_id();
if ( isset( $_SESSION['user_id'] ) ) {
unset( $_SESSION['user_id'] );
}
$qry = mysql_query( "SELECT user_id, user, user_group, user_name FROM c_users where user='$user' AND pass='".md5($pass)."'" );
if ( mysql_num_rows( $qry ) > 0 ) {
session_regenerate_id();
while ( $data = mysql_fetch_array( $qry ) ) {
$_SESSION['user_id'] = $data['user_id'];
$_SESSION['user_group'] = $data['user_group'];
$_SESSION['user'] = $data['user'];
$_SESSION['user_name'] = $data['user_name'];
// Debug
echo $_SESSION['user_id'];
echo $_SESSION['user_group'];
echo $_SESSION['user'];
echo $_SESSION['user_name'];
session_start( );
}
}
}
login( "username", "password" );
你有没有可能看出哪里出了问题
每个人都提到我的课程已经开始了;在错误的位置,但echo没有打印任何内容,在任何地方都绝对没有错误。您在执行会话检查之前调用会话\u在末尾启动您在执行会话检查之前调用会话\u在结尾启动;它应该在会话使用前使用会话启动;它应该在会话使用之前使用在分配会话变量之后,将会话开始放在底部 将此函数放在页面顶部并从底部删除。在分配会话变量后,您已将会话\u start放在底部 将此函数放在页面顶部并从底部删除。您需要将session\u start放在代码的顶部,因为它位于底部,所有$\u session变量都未声明,因此它们不会返回值。一个session\u start位于顶部,您将获得全局$\u session变量,并且还可以设置它们。我建议您创建一个名为config.php的脚本,该脚本具有session\u start,您可以将其包含在所有脚本中,而不是每次都添加session\u start。 希望这对您有所帮助:D您需要将session\u start放在代码的顶部,因为它位于底部,所有$\u session变量都未声明,因此它们不会返回值。一个session\u start位于顶部,您将获得全局$\u session变量,并且还可以设置它们。我建议您创建一个名为config.php的脚本,该脚本具有session\u start,您可以将其包含在所有脚本中,而不是每次都添加session\u start。
<?php
session_start();
$conf['sql_host'] = 'localhost';
$conf['sql_user'] = 'root';
$conf['sql_pass'] = '';
$conf['sql_data'] = 'c_webauth';
mysql_connect( $conf['sql_host'], $conf['sql_user'], $conf['sql_pass'] ) or die( 'Connection failed: '.mysql_error() );
mysql_select_db( $conf['sql_data'] );
function login( $user, $pass ){
session_regenerate_id();
if ( isset( $_SESSION['user_id'] ) ) {
unset( $_SESSION['user_id'] );
}
$qry = mysql_query( "SELECT user_id, user, user_group, user_name FROM c_users where user='$user' AND pass='".md5($pass)."'" );
if ( mysql_num_rows( $qry ) > 0 ) {
session_regenerate_id();
while ( $data = mysql_fetch_array( $qry ) ) {
$_SESSION['user_id'] = $data['user_id'];
$_SESSION['user_group'] = $data['user_group'];
$_SESSION['user'] = $data['user'];
$_SESSION['user_name'] = $data['user_name'];
// Debug
echo $_SESSION['user_id'];
echo $_SESSION['user_group'];
echo $_SESSION['user'];
echo $_SESSION['user_name'];
}
}
}
login( "username", "password" );
?>
希望这能帮助你:D
<?php
session_start();
$conf['sql_host'] = 'localhost';
$conf['sql_user'] = 'root';
$conf['sql_pass'] = '';
$conf['sql_data'] = 'c_webauth';
mysql_connect( $conf['sql_host'], $conf['sql_user'], $conf['sql_pass'] ) or die( 'Connection failed: '.mysql_error() );
mysql_select_db( $conf['sql_data'] );
function login( $user, $pass ){
session_regenerate_id();
if ( isset( $_SESSION['user_id'] ) ) {
unset( $_SESSION['user_id'] );
}
$qry = mysql_query( "SELECT user_id, user, user_group, user_name FROM c_users where user='$user' AND pass='".md5($pass)."'" );
if ( mysql_num_rows( $qry ) > 0 ) {
session_regenerate_id();
while ( $data = mysql_fetch_array( $qry ) ) {
$_SESSION['user_id'] = $data['user_id'];
$_SESSION['user_group'] = $data['user_group'];
$_SESSION['user'] = $data['user'];
$_SESSION['user_name'] = $data['user_name'];
// Debug
echo $_SESSION['user_id'];
echo $_SESSION['user_group'];
echo $_SESSION['user'];
echo $_SESSION['user_name'];
}
}
}
login( "username", "password" );
?>
我已经为你修改了密码
我已经为您修复了代码。在回显和设置会话变量之前启动会话?始终在页面最上方调用会话启动为什么要启动会话;在底部,在您分配了会话变量之后?如果这是一个新的应用程序,并且您将要更新您的PHP版本,那么您应该停止使用mysql_uu函数,并开始使用mysqli_uuu或PDO。如果您检查web服务器日志,我肯定您会在其中遇到有关会话变量的错误,所述错误是在回显和设置会话变量之前停止scriptsession_start?始终在页面顶部调用session_start为什么要启动会话;在底部,在您分配了会话变量之后?如果这是一个新的应用程序,并且您将要更新您的PHP版本,那么您应该停止使用mysql_uu函数,并开始使用mysqli_uuu或PDO。如果您检查web服务器日志,我肯定您会在其中遇到有关会话变量的错误,并且说错误是停止你的脚本似乎不起作用,我没有收到任何SQL错误,数据是从数据库中提取的。有什么想法吗?页面上有任何错误,或者目录中的error.log中有任何错误吗?我有错误报告;ini_设置“显示错误”、“打开”;也设置了,但没有出现任何问题。您是否尝试在其他主机上运行它?我的代码在一个主机上完全没有显示错误,但在另一个主机上显示了一些错误。似乎不起作用,我没有收到SQL错误,数据是从数据库中提取的。有什么想法吗?页面上有任何错误,或者目录中的error.log中有任何错误吗?我有错误报告全部;ini_设置“显示错误”、“打开”;也设置了,但没有出现任何问题。您是否尝试在其他主机上运行它?我有一个代码,在一个主机上完全没有显示错误,但在另一个主机上显示了一些错误。谢谢你的建议,我会保留在我的嘿,如果我解决了你的问题,别忘了给我一个绿色的记号;谢谢你的建议,我会把它记在心里的嘿,如果我解决了你的问题,别忘了给我一个绿色的记号;