【问题标题】:creating session for simple php password为简单的 php 密码创建会话
【发布时间】:2012-08-12 07:24:27
【问题描述】:

我需要能够存储在会话中提交的密码,因为目前使用 php_self 方法页面只是重新加载,好像用户没有正确输入密码(这发生在 Firefox 中,它实际上工作正常在 Chrome / Safari 中没有会话),所以我相信它需要一个会话才能在 FF 中工作,但我对 PHP 很陌生,不知道如何去做,这是代码:

提前致谢

<?php
session_start();

$Password = 'hello';

   if (isset($_POST['submit_pwd'])){
      $pass = isset($_POST['passwd']) ? $_POST['passwd'] : '';


      if ($pass != $Password) {
         showForm("error", "WRONG PASSWORD");
         exit();     
      }
   } else {
      showForm();
      exit();
   }

function showForm($Inputclass="mister", $Placeholder="PLEASE ENTER PASSWORD"){ 

?>

使用 HTML:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="pwd" id="pwd">


 <input class="<?php echo $Inputclass; ?>" name="passwd" type="password" size="79" style="margin-left: -100px;" placeholder="<?php echo $Placeholder; ?>"/>
         <br/>
             <input class="text" name="submit_pwd" value="Login" type="image" src="loginkey.png" style="position: relative; left: 240px; top: -35px;">

      </form>

【问题讨论】:

  • 你确定这是你能想象到的最安全的方式吗?
  • 服务器端代码独立于浏览器。如果它适用于 Chrome 而不是 Firefox,那么您的问题与 PHP 无关。
  • 我知道我应该使用哈希、盐等 - 这是一个非常简单的项目,所以我只需要一个基本密码,但我需要它才能跨浏览器工作
  • 坏主意,每次都让他们重新装满
  • 谢谢两位 - 任何想法为什么 FF 版本只是令人耳目一新?我认为这与它可能存储 cookie 的方式有关

标签: php session passwords


【解决方案1】:

如果您点击按钮,则应设置 $_POST['submit_pwd_x'] 和 $_POST['submit_pwd_y'],而不是 $_POST['submit_pwd']

如果您点击“回车”,则不应设置 $_POST['submit_pwd']、$_POST['submit_pwd_x'] 或 $_POST['submit_pwd_y'] - 但有时取决于浏览器。

你不能依赖任何一个,所以你的检查 if (isset($_POST['submit_pwd'])) 将是不可靠的

诀窍是在表单中添加一个隐藏字段,并在 $_POST 中检查该隐藏字段的提交。


有关答案的更多详细信息(基于评论):

PHP 是

if (isset($_POST['formsubmitted'])){ 
    ....
}

HTML 是

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="pwd" id="pwd"> 
     <input class="<?php echo $Inputclass; ?>" name="passwd" type="password" size="79" style="margin-left: -100px;" placeholder="<?php echo $Placeholder; ?>"/> 
     <br/>
     <input type="hidden" name="formsubmitted" value="1" /> 
     <input class="text" name="submit_pwd" value="Login" type="image" src="loginkey.png" style="position: relative; left: 240px; top: -35px;"> 

</form> 

编辑:

如果你不点击按钮(按回车键):

  • IE 不会发送任何内容
  • FF,Opera 将发送 submit_pwd_x=0 和 submit_pwd_y=0
  • Chrome、Safari 将发送 submit_pwd_x=0、submit_pwd_y=0 和 submit_pwd

如果你点击按钮:

  • IE 将发送 submit_pwd_x=X 和 submit_pwd_y=Y
  • FF,Opera 将发送 submit_pwd_x=X 和 submit_pwd_y=Y
  • Chrome、Safari 将发送 submit_pwd_x=X、submit_pwd_y=Y 和 submit_pwd

【讨论】:

  • 谢谢罗比 - 这一切都说得通。所以我需要 FF 提交所有三个,或者你说这是不可能的,这个脚本根本行不通?
  • 谢谢 Robbie - 我改为使用
猜你喜欢
  • 2018-02-07
  • 1970-01-01
  • 2014-07-06
  • 2013-05-29
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多