在php中使用会话登录

在php中使用会话登录,php,session,login,Php,Session,Login,即使我也有同样的问题,但无法找出实际原因。可能有帮助的几点是, 1) 标题前不应有输出。即没有回声或html 2) 同时检查每个php语句的末尾是否有合适的分号(如果需要)。 3) 在谷歌上搜索之后,这个问题似乎只会出现在firebug的旧版本中。(不确定) 4) 试着一次运行每一行代码。i、 e通过回音查看用户名和密码是否正确发布。此外,数据库连接正确,查询结果符合预期 服务器上是否有500个内部服务器错误 最新答案 此代码应适用于: <?php ob_start(); include(

即使我也有同样的问题,但无法找出实际原因。可能有帮助的几点是, 1) 标题前不应有输出。即没有回声或html 2) 同时检查每个php语句的末尾是否有合适的分号(如果需要)。 3) 在谷歌上搜索之后,这个问题似乎只会出现在firebug的旧版本中。(不确定) 4) 试着一次运行每一行代码。i、 e通过回音查看用户名和密码是否正确发布。此外,数据库连接正确,查询结果符合预期

服务器上是否有500个内部服务器错误

最新答案 此代码应适用于:

<?php
ob_start();
include("db_connect.php");
$tbl_name='login';
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
 $myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$encrypted_mypassword = crypt($mypassword,'ctk'); 

 $sql="SELECT * FROM $tbl_name WHERE u_name='$myusername' and password='$encrypted_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){
session_register("myusername");
session_register("encrypted_mypassword");
header("location:edit-grid.php");
}
else {header("location:main_login.php?a=Login Failed Try Again!!");
//echo "Wrong Username or Password";
}
ob_end_flush();
?>
原始答案 下面这行没有意义。您已经在脚本开始时启动了会话。也不接受任何论点。移除它可能会解决您的问题

session_start();
include("db_connect.php");

$myusername = mysql_real_escape_string($_POST['myusername']);
$mypassword = crypt($_POST['mypassword'], 'ctk'); 
$mypassword = mysql_real_escape_string($mypassword);

$sql = "SELECT * FROM `login` WHERE `u_name` = '$myusername' and `password` = '$encrypted_mypassword'";
$result = mysql_query($sql);

if(mysql_num_rows($result) == 1)
{
    $_SESSION['myusername'] = $myusername;
    $_SESSION['encrypted_mypassword'] = $encrypted_mypassword;
    header("Location: http://servername/folder/edit-grid.php");
}
else
{
    header("Location: http://servername/folder/main_login.php?a=Login Failed Try Again!!");
}
此外,重定向时应使用完整URL:

HTTP/1.1需要一个绝对URI作为 参数到»位置:包括 方案、主机名和绝对路径, 但有些客户机接受相对URI。 你通常可以使用 $\u服务器['HTTP\u主机'], $\u服务器['PHP\u SELF']和dirname()到 从相对URI生成绝对URI 你自己一个

资料来源:

编辑: 你的脚本中还有一个错误。在这一行:

session_start('myusername');
您使用
$result['myusername'],但应首先获取结果。像这样:

$_SESSION['myusername']=$result['myusername'];

天哪,蝙蝠侠!防止来自post的代码中的sql注入,如:password..如何防止sql注入给我一些提示我对phpRead是新手,请阅读我链接的文章。它给了你对这个问题的理解,甚至有一个PHP示例,关于如何防止它。考虑如果我通过管理员的用户名或1=‘1’会发生什么,现在你删除了<代码> SeStsixStade和 SeistOrthReads。您应该像以前一样使用
$\u SESSION
。请参阅:
加密
a
mysql\u real\u转义
密码可能会更改密码值并阻止登录。首先是
crypt
,然后是
escape
。我在服务器中替换了您的代码,但它仍然不工作,它检查数据库,我的意思是,当我给出错误的id、密码时,它会显示错误消息,但对于右侧,它不会在firebug中重定向其显示移动temporarily@mayuri您要重定向到的确切URL是什么?如果您转到该URL,是否有效,没有被重定向到它?你能给我们看看edit-grid.php中检查用户是否登录的代码吗。。。。检查登录会话的edit-grid.php文件
$row = mysql_fetch_assoc($result);
$_SESSION['myusername'] = $row['u_name'];