繁体   English   中英

使用php中的会话登录

[英]login using session in php

<?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();
?>

我有一个上面显示的登录页面,在localhost中工作正常,但在firebug中显示错误:无法加载源代码: http://localhost/emp_tracker/main/checklogin.php

在托管它的服务器中,它不会重定向它失败(会话失败),

更新的答案

这段代码应该有效:

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!!");
}

原始答案

下面的一行没有意义。 您已经在脚本的开头启动了会话。 session_start也不接受任何参数。 删除它可以解决您的问题。

session_start('myusername');

此外,您应该在重定向时使用完整的URL:

HTTP / 1.1需要绝对URI作为»Location:包括方案,主机名和绝对路径的参数,但某些客户端接受相对URI。 您通常可以使用$ _SERVER ['HTTP_HOST'],$ _SERVER ['PHP_SELF']和dirname()自己创建一个相对URI的绝对URI。

资料来源: http//www.php.net/manual/en/function.header.php

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

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

你使用$result['myusername']; ,但你应该先获取结果。 像这样:

$row = mysql_fetch_assoc($result);
$_SESSION['myusername'] = $row['u_name'];

即使我有同样的问题,但无法弄清楚实际的原因。 可能有帮助的一些要点是,1)标题之前应该没有输出。 即。 没有echo或html 2)还要检查每个php语句的末尾是否有正确的分号。 3)在google上搜索后,似乎问题可能只出现在旧版本的firebug中。 (不确定)4)尝试一次运行每行代码。 即查看是否通过回显正确发布了用户名和passowrd。 数据库连接也是正确的,查询结果是预期的。

您是否在服务器上收到500内部服务器错误?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM