PHP 登录系统不会 header ,并且在重新登录时必须刷新才能完全注销。

标签 php html mysql

我知道关于我的问题有很多很多问题,我读了很多,但我找不到解决我的问题的方法,这就是我问的原因。

我会写为什么我认为我有这些问题,以及如何解决这些问题,如果我错了,请您纠正我并帮助我解决,谢谢。我昨天读了很多信息和主题,但仍然没有找到解决方案。

我有 3 个错误。

如果我使用用户名“John”登录,然后注销,并使用用户名“Bob”连接,则会显示“John”的统计信息。

当按下登录按钮时,页面刷新,它会记录用户,但不会通过 profile.php 页面上的 header 重定向他。

错误:

session_start(): Cannot send session cache limiter - headers already sent (output started at /home/vestiged/public_html/game/ucp/profile.php:1) in /home/vestiged/public_html/game/ucp/profile.php on line 3

PHP Warning: Cannot modify header information - headers already sent by (output started at /home/vestiged/public_html/game/ucp/index.php:1) in /home/vestiged/public_html/game/ucp/index.php on line 19

我认为第一个错误是由我的index.php(这是登录)上的缓存引起的

<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta HTTP-EQUIV="Expires" CONTENT="-1">

第二个错误,可能是因为形式?我不知道!

我读到了有关修复第 3 号错误的信息,但之前我没有找到空格。 使用 html 元标记进行重定向有效。

关于错误1和错误2,我没有任何解决它们的线索,从昨天开始我就在我的脚本中搜索答案并进行修改,但仍然无法修复它。

我正在使用旧的 mysql,已弃用的 mysql,因为我只需要一个演示页面。

我正在使用登录脚本进入index.php,因此您可以从index.php登录。

如果您需要的话,可以进行现场演示:https://vestigedayz.com/game/ucp 用户名: 用户名和密码: parola

https://vestigedayz.com/game/ucp/profile.php (您可以登录后手动访问,因为它不会重定向)

我的代码:

<?php
require('config.php');
session_start();
ob_start();
// If form submitted, insert values into the database.
if (isset($_POST['password'])) {
  $username = $_POST['username'];
  $password = $_POST['password'];
  $username = stripslashes($username);
  $username = mysql_real_escape_string($username);
  $password = stripslashes($password);
  $password = mysql_real_escape_string($password);
  //Checking is user existing in the database or not
  $query = "SELECT * FROM `users` WHERE username='$username' and password='".sha1($password)."'";
  $result = mysql_query($query) or die(mysql_error());
  $rows = mysql_num_rows($result);
  if ($rows == 1) {
    $_SESSION['username'] = $username;
    header("Location: https://vestigedayz.com/game/ucp/profile.php"); 
    // Redirect user to index.php
  } else {
    echo "   <div class='hero'>
      <h1 id='title-1'>Parola greșită. :( <br>
     Încerci din nou?
     <br> <a href='index.php' style='color:white'> Click </a></h1> 
     </div>";
  }
} else {
}
?>
<html lang="en">
<head>
 <!--Audio player-->
      <audio autoplay loop>
          <source src="audio/audio9.ogg" type="audio/ogg">
          <source src="audio/audio9.mp3" type="audio/mpeg">
          Browserul tău nu suportă HTML5.
      </audio>   
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta HTTP-EQUIV="Expires" CONTENT="-1">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vestige DayZ</title>
<meta property="og:url" content="https://vestigedayz.com/index.html" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Vestige DayZ" />
<meta property="og:description" content="Vestige DayZ" />
<meta property="og:image" content="https://i.imgur.com/KHo2frf.png" />
<meta name="description" content="Vestige DayZ" />
<meta name="msapplication-tap-highlight" content="no" />
<meta name="robots" content="index,follow,all" />
<meta name="keywords" content="SA:MP Vestige Day Z" />
<meta name="author" content="Vestige DayZ" />
<link rel="apple-touch-icon" sizes="57x57" href="img/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="img/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="img/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="img/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="img/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="img/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="img/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="img/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="img/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="img/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="img/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="img/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="img/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="img/manifest.json">
<link rel="stylesheet" href="css/normalize.css">


<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileImage" content="img/mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
<link rel="stylesheet" href="css/animsition.min.css">
<link rel="stylesheet" type="text/css" href="css/grid.min.css" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
<link rel="stylesheet" type="text/css" href="css/menu.css" />
<link rel="stylesheet" type="text/css" href="css/overlay.css" />
<link rel="stylesheet" type="text/css" href="css/owl.carousel.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.1/animate.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>
  <style>
      /* NOTE: The styles were added inline because Prefixfree needs access to your styles and they must be inlined if they are on local disk! */
      @import url(https://fonts.googleapis.com/css?family=Open+Sans);
.btn { display: inline-block; *display: inline; *zoom: 1; padding: 4px 10px 4px; margin-bottom: 0; font-size: 13px; line-height: 18px; color: #333333; text-align: center;text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); vertical-align: middle; background-color: #f5f5f5; background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); background-image: linear-gradient(top, #ffffff, #e6e6e6); background-repeat: repeat-x; filter: progid:dximagetransform.microsoft.gradient(startColorstr=#ffffff, endColorstr=#e6e6e6, GradientType=0); border-color: #e6e6e6 #e6e6e6 #e6e6e6; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); border: 1px solid #e6e6e6; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); cursor: pointer; *margin-left: .3em; }
.btn:hover, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { background-color: #e6e6e6; }
.btn-large { padding: 9px 14px; font-size: 15px; line-height: normal; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; }
.btn:hover { color: #333333; text-decoration: none; background-color: #e6e6e6; background-position: 0 -15px; -webkit-transition: background-position 0.1s linear; -moz-transition: background-position 0.1s linear; -ms-transition: background-position 0.1s linear; -o-transition: background-position 0.1s linear; transition: background-position 0.1s linear; }
.btn-primary, .btn-primary:hover { text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); color: #ffffff; }
.btn-primary.active { color: rgba(255, 255, 255, 0.75); }
.btn-primary { background-color: #4a77d4; background-image: -moz-linear-gradient(top, #6eb6de, #4a77d4); background-image: -ms-linear-gradient(top, #6eb6de, #4a77d4); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#6eb6de), to(#4a77d4)); background-image: -webkit-linear-gradient(top, #6eb6de, #4a77d4); background-image: -o-linear-gradient(top, #6eb6de, #4a77d4); background-image: linear-gradient(top, #6eb6de, #4a77d4); background-repeat: repeat-x; filter: progid:dximagetransform.microsoft.gradient(startColorstr=#6eb6de, endColorstr=#4a77d4, GradientType=0);  border: 1px solid #3762bc; text-shadow: 1px 1px 1px rgba(0,0,0,0.4); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.5); }
.btn-primary:hover, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { filter: none; background-color: #4a77d4; }
.btn-block { width: 100%; display:block; }

* { -webkit-box-sizing:border-box; -moz-box-sizing:border-box; -ms-box-sizing:border-box; -o-box-sizing:border-box; box-sizing:border-box; }
html { width: 100%; height:100%; overflow:hidden; }
body { 
    width: 100%;
    height:100%;
    font-family: 'Open Sans', sans-serif;
    background: #092756;
    background: -moz-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%),-moz-linear-gradient(top,  rgba(57,173,219,.25) 0%, rgba(42,60,87,.4) 100%), -moz-linear-gradient(-45deg,  #670d10 0%, #092756 100%);
    background: -webkit-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%), -webkit-linear-gradient(top,  rgba(57,173,219,.25) 0%,rgba(42,60,87,.4) 100%), -webkit-linear-gradient(-45deg,  #670d10 0%,#092756 100%);
    background: -o-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%), -o-linear-gradient(top,  rgba(57,173,219,.25) 0%,rgba(42,60,87,.4) 100%), -o-linear-gradient(-45deg,  #670d10 0%,#092756 100%);
    background: -ms-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%), -ms-linear-gradient(top,  rgba(57,173,219,.25) 0%,rgba(42,60,87,.4) 100%), -ms-linear-gradient(-45deg,  #670d10 0%,#092756 100%);
    background: -webkit-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%), linear-gradient(to bottom,  rgba(57,173,219,.25) 0%,rgba(42,60,87,.4) 100%), linear-gradient(135deg,  #670d10 0%,#092756 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3E1D6D', endColorstr='#092756',GradientType=1 );
}
.login { 
    position: absolute;
    top: 75%;
    left: 50%;
    margin: -150px 0 0 -150px;
    width:300px;
    height:300px;
}
.login h1 { color: #fff; text-shadow: 0 0 10px rgba(0,0,0,0.3); letter-spacing:1px; text-align:center; }

input { 
    width: 100%; 
    margin-bottom: 10px; 
    background: rgba(0,0,0,0.3);
    border: none;
    outline: none;
    padding: 10px;
    font-size: 13px;
    color: #fff;
    text-shadow: 1px 1px 1px rgba(0,0,0,0.3);
    border: 1px solid rgba(0,0,0,0.3);
    border-radius: 4px;
    box-shadow: inset 0 -5px 45px rgba(100,100,100,0.2), 0 1px 1px rgba(255,255,255,0.2);
    -webkit-transition: box-shadow .5s ease;
    -moz-transition: box-shadow .5s ease;
    -o-transition: box-shadow .5s ease;
    -ms-transition: box-shadow .5s ease;
    transition: box-shadow .5s ease;
}
input:focus { box-shadow: inset 0 -5px 45px rgba(100,100,100,0.4), 0 1px 1px rgba(255,255,255,0.2); }

    </style>


        <script src="js/prefixfree.min.js"></script>


</head>
<body>
<div class="animsition-overlay">
  <div id="section-1">
    <header class="main_h">
      <div class="menufix"> <a class="logo" href="index.html"><img src="images/logo-sample.png" alt="Hello"></a>
        <div class="mobile-toggle"> <span></span> <span></span> <span></span> </div>
        <nav>
          <ul>
            <li><a class="out active animsition-link" href="index.html">ACASA</a></li>
            <li class="line"><a class="out animsition-link" href="aboutproject.html">DESPRE PROIECT</a></li>
            <li class="line"><a class="out animsition-link" href="gallery.html">GALERIE</a></li>
            <li class="line"><a class="out animsition-link" href="forum">FORUM</a></li>
            <li class="line"><a class="out animsition-link" href="UCP">UCP</a></li>
          </ul>
        </nav>
      </div>
      <!-- / row --> 

    </header>
    <div class="hero">
      <h1 id="title-1">SA:MP DayZ<em><span>V</span>ESTIGE</em>Loghează-te la caracterul tău.</h1>


       <body>
    <div class="login">
<form action="https://vestigedayz.com/game/ucp/index.php" method="post" name="login">
<input type="text" name="username" placeholder="Username" required />
<input type="password" name="password" placeholder="Password" required />
<input type="submit" name="submit" />
</form>
</div>


  <!-- END #section-1 -->

    <p class="dolje">&nbsp;<script>document.write(new Date().getFullYear())</script> &nbsp;www.vestigedayz.com- All rights Reserved.</p>
  </div>
  <!-- END #section-credits --> 
</div>
<!-- END .animsition-overla --> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script type="text/javascript" src="js/jquery.matchHeight-min.js"></script> 
<script src="js/wow.min.js"></script> 
<script src="js/animsition.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script> 
<script src="js/jquery.parallax-scroll.js"></script> 
<script src="js/owl.carousel.min.js"></script> 
<script src="js/jquery.cbpQTRotator.min.js"></script> 
<script>
    $(document).ready(function() {

      $("#owl-partners").owlCarousel({

          autoPlay: 4000, 
          stopOnHover : true,
          pagination : false,
          items : 5,
          itemsDesktop : [1199,4],
          itemsDesktopSmall : [959,3]     
      });     
    });
</script> 
<script>
    $( function() {
    $( '#cbp-qtrotator' ).cbpQTRotator();                   
    });
</script> 
<script src="js/functions.js"></script> 
<script src="js/particle.js"></script> 
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-15815880-3']);
  _gaq.push(['_trackPageview']);
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'https://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>
</body>
</html>

注销.php

<?php 

include("config.php"); //including our config.php 
session_start(); //starting session 
session_destroy(); //destroying it 
header('location: https://vestigedayz.com/game/ucp/'); //redirecting user to index.php 

?>

profile.php 的一部分

<?php
include("config.php"); //including our config.php 
session_start(); //starting session 
error_reporting(0); 

if(isset($_SESSION['username'])) 
{ 
    $username = $_SESSION['username']; //setting variable username as one from session 
    $query = mysql_query("SELECT * FROM users WHERE username = '$username'");  //selecting all from table users where username is name that your is loged in;
    while ($row = mysql_fetch_assoc($query)) //looping thousgt table to get informations 
    {

最佳答案

If I login with username "John" and then logout, and connect with username "Bob" it shows "John's" statistics.

这是一个 session fixation问题。显然 logout.php 中的 session_destroy() 不起作用。虽然只要身份验证(登录和注销)发生更改,您就应该始终更改 session ID,但这并不能解决这里的问题。据推测,logout.php 正在发出“ header 已发送”错误。 (见下文)。

Cannot send session cache limiter

不要尝试使您的 session 页面可缓存

这确实很难做到正确,除非您是 PHP 编程专家,否则不应该尝试(即使这样,这也是非常可疑的)。

不是由您向我们展示的 META header 引起的。它在你的 PHP config 中.

<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">

这是废话。删除它。

<meta HTTP-EQUIV="Expires" CONTENT="-1">

这是不明确的。删除它。

Cannot modify header information - headers already sent

再次阅读这些文档。查看错误,在您的情况下,它很可能是文件上的 BOM,但您编写代码的方式会导致失败 - 除非确实需要,否则不要使用结束标记。使用更好的编辑器或了解如何配置您正在使用的编辑器以将文件保存为不带 BOM 的 ascii 或 utf8。

sha1($password)

这是不安全的 - 你没有使用盐。

关于PHP 登录系统不会 header ,并且在重新登录时必须刷新才能完全注销。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49342519/

相关文章:

c++ - 使用 QSqlQuery 检索 MySQL 存储过程的输出

php 在连接字符串以生成 mysql 查询时添加斜杠

php - 第 152 行警告 : mysql_real_escape_string(): Access denied for user 'root' @'localhost' (using password: NO) in easy-contact-forms-database. php

javascript - Jade : mimick simple PHP function

java - 如何从jsoup中的p标签中选择图像?

javascript - 使用 jquery 隐藏多个选定的行

php - 用于插入和选择的不同表

php - 在 PHP session 中存储多个值

php - 当同一页面上有两个相同的 Jquery 时发生冲突

mysql - 索引是否创建新表?