1

我有一个网站,当我的用户登录时,它会将他们带到

验证.php

(它连接到数据库并将电子邮件和密码与用户输入匹配,如果确定将客户端数据放入会话并将客户端带到 /memberarea/index.php 否则返回登录页面并显示消息“无效的电子邮件或密码!”)

<?php
  ob_start();
  session_start();

  $email=$_POST['email'];
  $pass=md5($_POST['pass']);

  include("conn.php"); // connects to Database
  $sql="SELECT * FROM `user` WHERE email='$email' AND pass='$pass'";
  $result=mysql_query($sql);

  $new=mysql_fetch_array($result);

  $_SESSION['fname']=$new['fname'];
  $_SESSION['lname']=$new['lname'];
  $_SESSION['email']=$new['email'];
  $_SESSION['passwrd']=$new['passwrd'];


  $no=mysql_num_rows($result);

   if ($no==1){
    header('Location:memberarea/index.php');
   }else {

        header("Location:login.php?m=$msg"); //msg="Invalid Login"
   }

  ?>

然后在验证电子邮件 ID 和密码后,它会将他们带到`

/memberarea/index.php

(这就是问题发生的地方。)

在 index.php 中,它检查是否已创建会话以阻止黑客进入会员区并将其发送回登录页面。

<?
 session_start(); 
 isset($_SESSION['email'])` && `isset($_SESSION['passwrd'])` 

问题是客户端在 verify.php 中得到验证(代码在上面)

在 varify.php 中,只有在我把 ob_start();session_start(); 移到上面之后/memberarea/index.php

如果我删除ob_start() 它将客户端保留在 verify.php 页面上并显示错误标题是 alredy SENT

在我把ob_start()它放进去之后,/memberarea/index.php但会话是空白的,

所以它返回登录页面并显示错误($msg)“无效登录”,这是我编程显示的。

谁能告诉我为什么会话不能将值从 verify.php 传递到/memberarea/index.php

4

1 回答 1

0

似乎从conn.php获得了一些空白。如果在conn.php?>的末尾,请将其删除(后面可能有一些空格)并确保conn.php之前没有空格。那么你就不会出错了。<?header is alredy SENT

并且您应该在确保有如下结果后设置会话数据:

<?php
  ob_start();
  session_start();

  $email=$_POST['email'];
  $pass=md5($_POST['pass']);

  include("conn.php"); // connects to Database
  $sql="SELECT * FROM `user` WHERE email='$email' AND pass='$pass'";
  $result=mysql_query($sql);

  $no=mysql_num_rows($result);

   if ($no==1){

       // Set the session data here.
       $new=mysql_fetch_array($result);

       $_SESSION['fname']=$new['fname'];
       $_SESSION['lname']=$new['lname'];
       $_SESSION['email1']=$new['email1'];
       $_SESSION['passwrd']=$new['passwrd'];

       header('Location:memberarea/index.php');
   }
   else {

       header("Location:login.php?m=$msg"); //msg="Invalid Login"
   }

还有一件事情; 您正在为电子邮件数据使用两个索引 $_SESSION[' email1 ']$_SESSION[' email ']。第一个(email1)是错误的。

于 2012-12-17T04:48:08.717 回答