Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
登录并签出PHP_Php_Html_Login - Fatal编程技术网

登录并签出PHP

登录并签出PHP,php,html,login,Php,Html,Login,当一个人登录时,它会将他们引导到index.php波段,让他们在我的签出页面上签出。当我改变我的方向时,当他们点击登录时,它不起作用,然后当他们去签出时,它一直要求他们登录。有人知道我哪里出了问题吗 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.or

当一个人登录时,它会将他们引导到index.php波段,让他们在我的签出页面上签出。当我改变我的方向时,当他们点击登录时,它不起作用,然后当他们去签出时,它一直要求他们登录。有人知道我哪里出了问题吗

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">  
 <head>  
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
 </head>  
 <body>  
 <div id="main">
 <?php
 include "base.php"; 
 if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Email']))
 {
      ?>

     <h1>Member Area</h1>
        <p>Thanks for logging in! Your email address is: <b><?=$_SESSION['Email']?><b> 

     <ul>
          <li><a href="logout.php">Logout.</a></li>
     </ul>

      <?php
  }
  elseif(!empty($_POST['email']) && !empty($_POST['password']))
 {
     $email = mysqli_real_escape_string($_SESSION['base'], $_POST['email']);
     $password = md5(mysqli_real_escape_string($_SESSION['base'], $_POST['password']));

     $checklogin = mysqli_query($_SESSION['base'], "SELECT * FROM Users WHERE Email =   '".$email."' AND Password = '".$password."'");

     if(mysqli_num_rows($checklogin) == 1)
     {
        $row = mysqli_fetch_array($checklogin);
            $email = $row['Email'];

         $_SESSION['Email'] = $email;
         $_SESSION['LoggedIn'] = 1;

     }
     else
      {
         echo "<h1>Error</h1>";
         echo "<p>Sorry, your account could not be found. Please <a href=\"index.php\">click here to try again</a>.</p>";
     }
 }
 else
 {     
    ?>

    <h1>Member Login</h1>

    <p>Thanks for visiting! Please either login below, or <a href="register.php">click here to register</a>.</p>

     <form method="post" action="index.php" name="loginform" id="loginform">
     <fieldset>
    <label for="email">Email:</label><input type="text" name="email" id="email" />   <br />
        <label for="password">Password:</label><input type="password" name="password"     id="password" /><br />
        <input type="submit" name="login" id="login" value="Login" />
         </fieldset>
         </form>

    <?php
 }
 ?>
 </div>
 </body>
 </html>

会员区
谢谢登录!您的电子邮件地址是:
更改:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">  
 <head>  
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
 </head>  
 <body>  
 <div id="main">
 <?php
 include "base.php"; 


请记住,我假设session_start()位于base.php文件中。如果不是,它可能应该是:)在任何输出/头之前需要运行session_start()。如果没有它,您的会话将无法工作。

要使用基于cookie的会话,必须在将任何内容输出到浏览器之前调用session_start()。 参考:

要解决此问题,您可以移动
包括“base.php”

在你的第一行html之前,我相信你需要
session\u start()
在两个或所有的PHP文件中,并且在用户注销时可能需要
session\u destroy()
;开始时,是否在包含base.php的每个页面上都自动包含session start?可能是因为
session\u start()
位于
base.php
文件中,但有时情况可能并非如此。就我个人而言,在某些情况下,我把它放在所有(PHP)文件中。你必须尝试不同的组合。但大多数情况下,它必须在所有PHP文件中。@Fred如果session_start()在base.PHP中,它仍然无法工作,因为他在调用它之前已将HTML发送到浏览器。@CameronLaird请参见下面Wayne的回答。他将
base.php
置于HTML之上。试试看。好的,谢谢你的帮助。它似乎仍然不起作用。会话是否应该启动();在每一页上?@CameronLaird是的。您应该在您的用户将访问的每个页面上使用session_start()。它可以工作,但当我将“”更改为“”时,它不工作。您所说的“不工作”是什么意思?发生了什么,与您预期的情况相反?当它只有索引时,在登录时会显示一个空白页面,然后您可以添加到购物篮并结帐,但当我更改它时,它会转到正确的页面,但当我签出它时,它会不断要求我登录。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">  
 <head>  
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
 </head>  
 <body>  
 <div id="main">
 <?php
 include "base.php"; 
<?php include "base.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">  
 <head>  
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
 </head>  
 <body>  
 <div id="main">