【问题标题】:Why is it not detecting a capital letter in php [duplicate]为什么它没有在php中检测到大写字母[重复]
【发布时间】:2016-08-26 20:45:36
【问题描述】:

这是别人的代码,似乎对除我之外的所有人都有效。 即使我有专门的代码,它似乎也没有检测到大写字母。

有人能在我的代码中发现错误吗:

<?php

if($_POST['submit']){


    if(!$_POST['email']) $error.="<br />Please enter your email";
        else if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) $error.="<br />Please enter a valid mail";

    if(!$_POST['password']) $error.="<br />Please enter your password";
    else {

            if(strlen($_POST['password'])<8) $error.="<br />Please enter a password with atleast 8 characters";
            if(!preg_match('/[A-Z]/', $_post['password'])) $error.="<br />Please enter atleast one capital letter";
        }

        if($error) echo "There were error(s) in your details:".$error;

    }   

?>




<form method="post">

        <input type="email" name="email" id="email" />
        <input type="password" name="password" />
        <input type="submit" name="submit" value="signup" />

</form>

这里是它的链接:

http://hassannasir.co.uk/mysql/

【问题讨论】:

  • 区分大小写:$_POST['password'],而不是$_post['password']
  • 有点讽刺意味,因为您正在寻找大写字母。
  • @MarkBaker Zend 为不受支持的 PHP 版本提供认证有点讽刺。
  • @CharlotteDunois - 我推迟了获得 5.5 认证,计划在 php7 认证可用时直接跳到 php7 认证......仍在等待

标签: php html mysql css


【解决方案1】:

PHP 变量区分大小写。 $_POST$_post 是两个完全不同的变量。

如果您启用了 error_reporting 和 display_errors,您会被告知在使用未定义变量时 $_post 既是未定义的又是未定义的索引。

【讨论】:

  • 啊啊啊。为什么我总是错过最明显的。谢谢!
  • 开启这些设置。首先,它们不应该在调试/开发系统上关闭。
  • 我添加了:ini_set('display_errors', 1); ini_set('display_startup_errors', 1);错误报告(E_ALL);以及一个 php.ini 文件:display_errors = on。但现在由于某种原因,它一直说“未定义的索引:在第 7 行提交”。在 html 中已经定义了提交。它也没有发现任何其他错误。抱歉,我是新手,正在努力学习这一点。
  • submit 仅在 html 中定义为 POST 请求,而不是最初请求表单的 GET 请求
  • @HassanNasir 你需要if($_POST['submit']){ 而不是if(isset($_POST['submit'])){。因为您正在将 $_POST 索引评估为布尔值,但正如 Mark 所说,在您提交表单之前它是未定义的。事实上,包含类似内容的唯一原因是您的 PHP 代码只会在表单提交后执行。
猜你喜欢
  • 2019-10-02
  • 2021-10-25
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 2014-10-10
  • 2020-09-11
相关资源
最近更新 更多