这个登录脚本似乎不起作用。我检查了它是否通过了 if 语句,确实如此。还有什么问题?
处理登录的脚本:
<?php
include("config.php");
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM " .$members. " WHERE BINARY `username`= '".$myusername."' and BINARY `password`= '".$mypassword."'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
$row = mysql_fetch_array( $result );
if($count==1){
$_SESSION['username'] = $myusername;
$_SESSION['password'] = $mypassword;
$_SESSION['privileges'] = $row['privileges'];
$_SESSION['email'] = $row['email'];
header("location:index.php");
}
?>
检查用户是否登录index.php
的脚本:
<?
session_start();
if(!isset($_SESSION['username'])){
header("location:login.php");
}
?>
最佳答案
像这样改进你的代码
登录-exec.php
<?php
//Start Session
session_start();
//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
//Sanitize the POST values
$myusername = clean($_POST['myusername']);
$mypassword = clean($_POST['mypassword']);
//Create query
$qry="SELECT * FROM " .$members. " WHERE `username`='".$myusername."' AND `password`='".$mypassword."'";
$result=mysql_query($qry);
//Check whether the query was successful or not
if($result) {
if(mysql_num_rows($result) == 1) {
//Login Successful
session_regenerate_id();
$member = mysql_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
$_SESSION['SESS_FIRST_NAME'] = $member['firstname'];
$_SESSION['SESS_LAST_NAME'] = $member['lastname'];
$_SESSION['SESS_EMAIL'] = $member['email'];
$_SESSION['SESS_USER_NAME'] = $member['username'];
session_write_close();
header("location: index.php");
exit();
}else {
//Login failed
header("location: login-failed.php");
exit();
}
}else {
die("Query failed");
}
?>
并将你的index.php放入其中
<?php session_start(); ?>
<?php
require_once('safe.php');
?>
创建一个 php 页面,输入此代码以检查用户
<?php
//Start session
session_start();
//Check whether the session variable SESS_MEMBER_ID is present or not
if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) {
header("location: access-denied.php");
exit();
}
?>
关于php - 登录脚本不起作用 - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19249976/