【发布时间】:2014-10-24 17:12:00
【问题描述】:
我为登录页面创建了这个简单的 PHP 代码
<head>
<title>Login Page</title>
</head>
<body>
<form method=POST>
<table>
<tr><th>UserName</th>
<td><input type=text name=user></input></td></tr>
<tr><th>Password</th>
<td><input type=password name=pass></input></td></tr>
<tr><th>Phone Number</th>
<td><input type=text name=phone></input></td></tr>
<tr><th>Email</th>
<td><input type=text name=email></input></td></tr>
<tr><th>City</th>
<td><input type=text name=city></input></td></tr>
<tr><td><input type=submit name=submit value=Submit></input></td></tr>
</table>
</form>
</body>
</html>
<?php
if(isset($_POST['submit']) && !empty($_POST['user']))
{
if(preg_match("/^[a-zA-Z ]{3,40}$/",$_POST['user']))
{
if(preg_match("/^[a-zA-Z0-9]{8,20}$/",$_POST['pass']))
{
if(filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
if(preg_match("/[0-9]{10}/",$_POST['phone']))
{
$username=$_POST['user'];
$password=$_POST['pass'];
$Email=$_POST['email'];
$phoneNumber=$_POST['phone'];
$con=mysqli_connect("localhost:8080","root","","user");
mysqli_query($con,"insert into user values('$username','$Email','$phoneNumber','$city')");
}
else
{
echo "Invalid Phone number";
}
}
else
{
echo "Invalid Email";
}
}
else
{
echo "Invalid Phone number";
}
}
else
{
echo "Invalid user";
}
}
?>
每当我运行此脚本并尝试将值插入表中时,都会花费大量时间并引发以下错误/警告。我没有更改用户名和密码,我相信默认情况下它是 root 和空白。
警告:mysqli_connect(): MySQL server has gone away in C:\xampp\htdocs\home.php on line 39
警告:mysqli_connect():读取问候包时出错。第 39 行 C:\xampp\htdocs\home.php 中的 PID=4708
警告:mysqli_connect(): (HY000/2006): MySQL server has gone away in C:\xampp\htdocs\home.php on line 39
致命错误:在第 39 行的 C:\xampp\htdocs\home.php 中超过了 30 秒的最大执行时间
有人可以帮我解决这个问题,因为我认为问题出在某些端口配置上。
感谢和问候。
【问题讨论】:
-
这看起来非常不安全。你确定你的用户参数是properly escaped吗?使用
mysqli时,您应该使用参数化查询和bind_param将用户数据添加到您的查询中。 请勿使用字符串插值来完成此操作,因为您将创建严重的SQL injection bugs。 -
与其编写自己的登录系统,不如使用development framework,如Laravel,内置authentication system。你在这里炮制的东西不适合生产使用。