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');