php - 登录脚本不起作用 - PHP

标签 php mysql session-variables

这个登录脚本似乎不起作用。我检查了它是否通过了 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/

相关文章:

python - 如何将空值存储为整数字段

PHP从html页面中提取所有文本

javascript - 使用 JavaScript 读取/写入文件时的字符编码

php - 如何自动删除数据库中存在一个月的mysql记录

php - WordPress wpdb->插入/更新不工作

java - jsp:useBean 范围

输出后未写入 PHP session (外部 ajax 调用上的 echo 或 print_r)

php - Laravel 用户登录时如何设置 session 变量

php - MySQL ORDER BY 优化多个连接

php - 获取/读取 laravel 5.8 存储非公共(public)文件夹文件以查看?