PHP:If语句&;形式

PHP:If语句&;形式,php,forms,Php,Forms,我的代码是 <?php $username = mysql_real_escape_string($_POST['username']); $password = mysql_real_escape_string($_POST['password']); $passwordr = mysql_real_escape_string($_POST['passwordr']); $email = mysql_real_escape_

我的代码是

<?php
        $username = mysql_real_escape_string($_POST['username']);
        $password = mysql_real_escape_string($_POST['password']);
        $passwordr = mysql_real_escape_string($_POST['passwordr']);
        $email = mysql_real_escape_string($_POST['email']);

        if(empty($username) || empty($password) || empty($passwordr) || empty($email)) {
            echo '<div class="alert alert-danger">Bitte fülle alle Felder aus.</div>';
        }

        elseif(!preg_match('/^[a-zA-Z0-9-_^#]{4,15}$/', $username)) {
            echo '<div class="alert alert-danger">Bitte gebe einen gültigen Usernamen ein.<br />Der Username muss mindestens 4 und maximal 15 Zeichen lang sein und darf nur folgende Sonderzeichen enthalten: -_^#</div>';
        }

        elseif(!preg_match('/^[a-zA-Z0-9-_*^#?!.,;@€]{8,20}$/', $password)) {
            echo '<div class="alert alert-danger">Bitte gebe ein gültiges Passwort ein.<br />Das Passwort muss mindestens 8 und maximal 20 Zeichen lang sein und darf nur folgende Sonderzeichen enthalten: -_*^#?!.,;@€</div>';
        }

        elseif($passwordr != $password) {
            echo '<div class="alert alert-danger">Die Passwörter stimmen nicht überein.</div>';
        }

        elseif(!preg_match('/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2,4}$/', $email)) {
            echo '<div class="alert alert-danger">Bitte gebe eine gültige E-Mail Adresse ein.</div>';
        }

        else {
            die("have a n1 day");
        }
    ?>

如果添加错误日志记录

error_reporting(E_ALL);
ini_set('display_errors','On');
您将看到:

已弃用:
mysql\u real\u escape\u string()
:mysql扩展是 已弃用并将在将来删除:使用mysqli或PDO 而是在在线38

警告:
mysql\u real\u escape\u string()
第38行的/public\u html/index.php

mysql\u real\u escape\u string
要求您首先连接到数据库。事实上,此函数已被弃用


您可以先从代码中删除
mysql\u real\u escape\u string
,看看它是否有效。

变量设置在哪里?您也可以提供表单标记吗?首先检查您是否确实从表单中获取了值,您可以使用:print\r($\u REQUEST);死亡而不是显示更多代码,在这些代码中,您实际上是从$\u POST(或$\u GET)将此赋值到这些变量中。您没有使用extract,对吗?您意识到名称不会神奇地变成
$username
,而是
$\u POST['username']
请。它们不再得到维护,而是在使用。相反地学习,并考虑使用PDO,这是一些令人生厌的代码,原因很多。首先,您使用的是不推荐使用的mysql_*函数。其次,你对你的正则表达式设置了荒谬的密码限制,这实际上会降低你应用程序的安全性。第三,由于您有密码长度限制,我假设您也将它们存储在纯文本中,而不是使用
password\u hash()
散列。然后,为了增加额外的错误,您使用regex来验证电子邮件地址,而不是使用
filter\u var
error_reporting(E_ALL);
ini_set('display_errors','On');