0

可能重复:
PHP 替代 session_is_registered

许多人可能会使用 PHP MySQL 函数作为网站的登录部分

我正在尝试使用此代码;

在每个内容页面上 - 检查是否登录

<?php
session_start();
if( isset($_SESSION[$myusername]) ){
header("location:main_login.php");
}
?>

检查登录脚本

<?php

$host="**"; // Host name 
$username="**"; // Mysql username 
$password="**"; // Mysql password 
$db_name="ClubEvents"; // 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){

// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword"); 
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
?>

注销代码

<?php 
session_start();
session_unset();
header("Location: main_login.php");
?>

但是有些东西不起作用,该页面login_success.php应该只有在登录时才能访问,所以要么注销不起作用,要么login_success.php检查不起作用。但我不知道该怎么说,我试过和他们一起玩,还是没有进一步的前进。

4

3 回答 3

4

快速检查 PHP 手册会发现答案

如果使用 $_SESSION(或 PHP 4.0.6 或更低版本的 $HTTP_SESSION_VARS),请使用 isset() 检查在 $_SESSION 中注册的变量。

笔记:

您的源代码中还有其他错误:myusername应该引用,header() 应该跟在后面exit;

于 2012-11-23T13:46:08.543 回答
3

我相信这在这里得到了回答:

session_is_registered 的 PHP 替代方案

if( isset($_SESSION[$myusername]) )
于 2012-11-23T13:45:26.190 回答
0

始终与空支票一起使用

if( isset($_SESSION[$myusername])  and $_SESSION[$myusername]<>"")
于 2012-11-23T13:49:58.153 回答