我正在开展一个学校项目,无法正确完成注册页面。它只是没有在表格中插入数据。
Here is a screenshot for database and table
我添加了HTML,在完成所有答案后,我认为我正在使用过时的视频和学习资料来学习(PHP,HTML,CSS,网站安全)。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Register</title>
</head>
<body>
<div class="form">
<h2>Registeration</h2>
<form action="" method="post">
Name<input type="text" name="name" placeholder="First & Last name" required><br><br>
Username<input type="text" name="username" placeholder="Username"required><br><br>
Password<input type="password" name="password" placeholder="Keep it Strong"required><br><br>
Confirm Password<input type="password" name="confirm-pass" placeholder="Re-Enter Password"required><br><br>
Email<input type="email" name="email" placeholder="Email"required><br><br>
Phone No.<input type="text" name="phone-no" placeholder="Phone No"required><br><br>
Gender<input type="text" name="gender" placeholder="Male or Female"required><br><br>
State<input type="text" name="state" placeholder="State"required><br><br>
<button type="submit" name="home">Home</button>
<button type="submit" name="sub">Submit</button>
<button type="submit" name="reset">Reset</button>
</form>
</div>
</body>
</html>
<?php
$con=mysqli_connect('localhost','root','123456789','eedb');
if ($con)
{
if (isset($_POST['sub']))
{
$n= $_POST['name'];
$un=$_POST['username'];
$p=$_POST['password'];
$cp=$_POST['confirm-pass'];
$e=$_POST['email'];
$pn=$_POST['phone-no'];
$g=$_POST['gender'];
$s=$_POST['state'];
mysqli_query($con,"SELECT * FROM `register`");
$insert= mysqli_query($con,"INSERT INTO `register`(`name`, `username`, `password`, `confirm-pass`, `email`, `phone-no`, `gender`, `state`) VALUES ('$n','$un','$p','$cp','$e','$pn','$g','$s')");
if ($insert)
{
echo "<center>Data Successfully Submitted</center>";
}
else
{
echo "<center>Data Not Submitted</center>";
}
}
}
else
{
echo "<center>Oh!no there is an error.<br><br>But don't worry we have an army of trained chimpanzies to deal with it.<br><br> <image src='images/chimps.jpg'><br><br>Come Back Soon</center>";
}
if (isset($_POST['home']))
{
header("location:index.php");
}
if (isset($_POST['reset']))
{
header("location:register.php");
}
?>
答案 0 :(得分:1)
由于您没有发布您的HTML表单,我发布了以下答案,这是您的HTML表单应该(基本上)的样子,btw只包含一个示例元素。
您需要填写其余内容并遵循相同的惯例。
<form method="post" action="handler.php">
First name:
<input type="text" name="name">
<br>
<input type="submit" name="sub" value="Submit">
</form>
如果包含MySQL可能抱怨的任何字符,例如撇号,则转义您的值。
即:Doug's Bar & Grill
。
然后:
$n= mysqli_real_escape_string($con, $_POST['name']);
您应该使用的东西或准备好的语句,因为您的代码目前对SQL注入开放。
对所有其他POST阵列也这样做。
使用纯PHP和HTML表单的post方法时,POST数组需要name
属性。
旁注:您的整个代码取决于以下条件语句
if (isset($_POST['sub'])){...}
。因此,请确保该表单元素具有相同的名称属性。
因为这对你没有帮助:
echo "<center>Data Not Submitted</center>";
参考文献:
目前还不清楚你要用这条线做什么:
mysqli_query($con,"SELECT * FROM `register` ");
如果目标是检查是否存在行,请参阅Stack上的一个答案:
<强>密码强>
我还注意到您可能以纯文本格式存储密码。不建议这样做。
使用以下其中一项:
password_hash()
功能。关于列长的重要说明:
如果您决定使用password_hash()
或兼容包(如果PHP <5.5)https://github.com/ircmaxell/password_compat/,请务必注意,如果您当前的密码列的长度低于60 ,它需要更改为(或更高)。手册建议长度为255。
您需要更改列的长度并重新开始使用新哈希才能使其生效。否则,MySQL将无声地失败。
其他感兴趣的链接:
HTML stickler:
{@ 1}}标记已弃用,已从Web标准中删除。
有关详细信息,请访问以下内容:
答案 1 :(得分:0)
你可以试试这个
$insert= mysqli_query($con,"INSERT INTO `register`(`name`, `username`, `password`, `confirm-pass`, `email`, `phone-no`, `gender`, `state`)VALUES ('$n','$un','$p','$cp','$e','$pn','$g','$s')");
您可以尝试使用notepad ++或任何其他编辑器(例如netbeans),这将使开放式和封闭式括号更加明显。