3

第一次来这里。让我们希望这行得通!

我是 PHP 新手,正在尝试创建一个网站,用户可以在其中拥有自己的页面,其中包含可以编辑的内容。我让登录系统工作到一半。它正确识别用户名和密码,但似乎没有存储 $_SESSION 变量。起初我以为是因为我试图将用户名(本身是一个变量)设置为 $_SESSION 变量,但即使我将其设置为绝对值,我的代码检查用户是否已登录也会将它们重定向到“您尚未登录”页面。这是我的验证php代码:

<?php

$host="xxxx.ipagemysql.com";
$username="xxxxx";
$password="xxxxxx";
$db_name="farmers";
$tbl_name="users";

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$farmeruser=$_POST['farmeruser'];
$farmerpw=$_POST['farmerpw'];

$sql="SELECT * FROM ".$tbl_name." WHERE farmeruser='".$farmeruser."' and farmerpw='".$farmerpw."';";

$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){

session_start();
$_SESSION['member'] = "affirmative";
header("location:succesful_login.php");
}
else {
echo "Wrong Username or Password";
}
?>

这是我的页面,它永远不会识别出用户已登录:

<?php
session_start();
if($_SESSION['member'] == "affirmative")
{
echo
"Welcome!";
}
else {
header('Location: http://www.leukosweb.com/user_not_recognized.php');
}
?>

任何想法为什么这不起作用?

PS。我想将“肯定”更改为用户的登录名。如果您想帮助我使用登录验证页面中的变量设置 $_SESSION 'member' 变量,那也很棒!

4

5 回答 5

1

session_start()需要向用户的浏览器添加一个 cookie,如果您在第一个之前有任何空间<?php,它将被输出到浏览器并且会搞砸设置 cookie。我会移动session_start()到第二行

<?php
session_start();

并确保没有多余的空间,您可以检查您的浏览器 cookie,看看您是否有 cookie PHP_SESSION 或类似的,如果您

print session_start();

true如果能够创建会话,它应该返回- 如果不是,您可能在 PHP 配置和创建会话时遇到问题。

这也需要纠正

header("location:succesful_login.php");

应该

header("Location: succesful_login.php");

于 2012-11-16T02:29:14.813 回答
1

检查 php.ini 文件中的会话超时时间

于 2012-11-16T09:00:19.837 回答
1

转到 Ipage 并登录到您的帐户。
转到 CGI 和脚本语言支持在那里
选择 PHP 脚本
通过按 ctrl +f 找到 save_path 来编辑 php.ini 文件并将
`session.save_path = "/var/php_sessions"`
更改为
`session.save_path = "/tmp" `

于 2015-01-19T05:23:36.460 回答
0

你需要尝试一些事情来看看出了什么问题。让我们尝试查看以下几行。

session_start();
$_SESSION['member'] = "affirmative";
header("location:succesful_login.php");

注释掉标头位置重定向。在 $_SESSION['member'] 设置为肯定后,回显该变量以查看其中的内容。

echo "DBUG: ".$_SESSION['member']. "<br />";

让我们先测试一下,让它工作,然后你可以用你要求的用户名设置它。

$_SESSION['member'] = $farmeruser;

但是 $farmeruser 直接来自 $_GET... 您可能希望在阻止 SQL 注入后从行中获取用户名。

让我们在设置后立即检查该代码以查看它是否工作。我还喜欢将 session_start() 放在页面顶部。将连接数据库详细信息放入单独的包含文件中。

于 2012-11-16T05:31:50.587 回答
0

好的,虽然 Anad Pal 的答案不是正确的,但它让我朝着正确的方向前进。原来您必须在以下行更改您的 iPage 帐户的 php.ini 文件

session.save_path = "/var/php_sessions"

session.save_path = "/tmp"

现在一切正常。谢谢!具有讽刺意味的是,这不是我自己的代码,但是 ipage 存储会话的默认设置不起作用>.<

于 2012-11-16T14:12:31.763 回答