2012-11-15 31 views
1

我是PHP新手,正在努力寻找一个登录页面。我有下面的脚本“工作”,但现在我想设置一个会话,如果用户的密码是正确的,我可以转到其他页面。所以我试图找出需要在其他页面上检查会话的内容。如何在登录后设置和检查会话?

由此看来,如果我把这样的事情在页面上我回来:

<?php 
if($_SESSION['login'] = "1") { 
echo "you are logged in"; 
} 
else 
{ 
echo "you are not logged in"; 
} 
?> 

好像我把我的成功消息的所有时间。我不能理解这是如何工作的。任何建议表示赞赏 - 如果需要,可以完全重写。谢谢!

这里是我当前的登录脚本:

<?php 
// error reporting 
ini_set('display_errors',1); 
error_reporting(E_ALL); 
$host="foo"; // Host name 
$username="foo"; // Mysql username 
$password="foo"; // Mysql password 
$db_name="foo"; // Database name 
$tbl_name="members"; // Table name 
// 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"); 
// username and password sent from form 
$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); 
$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) { 
session_start(); 
$_SESSION['login'] = "1"; 
header ("Location: http://www.google.com"); 
} 
else { 
session_start(); 
$_SESSION['login'] = ''; 
header ("Location: http://www.yahoo.com"); 
} 
?> 

应用更改以下建议,我有在我回来的页面如下:

<?php 
session_start(); 
if ($_SESSION['login'] == "1") { 
echo "you are logged in"; 
} 
else if ($_SESSION['login'] == "") 
{ 
echo "you are not logged in"; 
} 
?> 

和下面的变化将我登录脚本:

if($count==1) { 
session_start(); 
$_SESSION['login'] =="1"; 
header ("Location: login.php"); 
} 
else { 
session_start(); 
$_SESSION['login'] == ""; 
header ("Location: login.php"); 
} 

现在无论如何,我得到我的“你没有登录”的消息。 ..hmm。

更新 - 确定 - 如果我不改变我的脚本==它似乎工作。如果我有

if($count==1) { 
session_start(); 
$_SESSION['login'] = "1"; 
header ("Location: login.php"); 
} 
else { 
session_start(); 
$_SESSION['login'] = ""; 
header ("Location: login.php"); 
} 

,这在页我回来:

<?php 
session_start(); 
if ($_SESSION['login'] == "1") { 
echo "you are logged in"; 
} 
else if ($_SESSION['login'] == "") 
{ 
echo "you are not logged in"; 
?> 

...这似乎工作。

+0

您还必须调用'在session_start()'访问'其他页面上$ _SESSION'。所有访问'$ _SESSION'的脚本需要一个'session_start()' –

+1

有一个错误$ _SESSION ['login'] =“1”'必须是'$ _SESSION ['login'] ==“1”' –

回答

2

它应该是:如果($ _SESSION [ '登录'] == “1”)

,因为你正在做的方式,它设置值,并返回true。

+1

更加安全的是使用if($ _SESSION ['login'] ===“1”),因为===检查类型以及 例如: $ integer === 4(true) $整数===“test”(false) $ integer ===“4”(false) $ string ===“test”(true) $ string ===“4”(true) $ string = == 4(false) – NoScope

+0

我试图添加推荐的编辑 - 现在我似乎得到我的“你没有登录”每次回声。查看我的代码的其他问题? –

+0

编辑:进行上述更改,并且SEEM现在可以。谢谢! –

0

你varible $名为myUsername和$输入mypassword已经为两个不同的功能被指定,你surpose到indivisualise他们.......

相关问题