注册表单提交到数据库PHP
我是一名PHP初学者,我正在尝试为一个项目构建一个注册表单,我使所有的验证都成为可能,但是我被困在这里,因为它应该去哪里,我希望表单验证以下所有内容,然后提交,如果都是真的 PHP代码:注册表单提交到数据库PHP,php,html,mysql,forms,Php,Html,Mysql,Forms,我是一名PHP初学者,我正在尝试为一个项目构建一个注册表单,我使所有的验证都成为可能,但是我被困在这里,因为它应该去哪里,我希望表单验证以下所有内容,然后提交,如果都是真的 PHP代码: <?php //register form v1.0 error_reporting(0); //declares register form $formFields = array('reg-username' => 'اسم المستخدم', 'reg-email' =&
<?php
//register form v1.0
error_reporting(0);
//declares register form
$formFields = array('reg-username' => 'اسم المستخدم',
'reg-email' => 'البريد الإلكتروني',
'reg-password' => 'كلمة المرور',
'reg-confirmPassword' => 'تأكيد كلمة المرور');
function checkBlank(){
global $formFields;
//now I want the browser to check each field if its empty
foreach($formFields as $fieldName => $fieldRealName){
if(empty($_POST[$fieldName])){
echo '<ul class="ErrorMessage"><li>لم تدخل '. $fieldRealName .' * </li></ul>';
echo '<style>.'. $fieldName .'{
border-color: red;
}
.'. $fieldName .'::-webkit-input-placeholder {
color: red;
}
.'. $fieldName .'-h{
color: red;
}
#asetrik{
display: none;
}
</style>';
}
}
}
//blank fields have been checked
function checkPass(){
$regPassword = $_POST['reg-password'];
$regConfPassword = $_POST['reg-confirmPassword'];
if($regPassword !== $regConfPassword){
echo '<ul class="ErrorMessage"><li>كلمات المرور غير متطابقة *</li></ul>';
} //if the fields are not empty i want it to check if the passwords match
}
function checkEmail(){
$regEmail = $_POST['reg-email'];
if (!filter_var($regEmail, FILTER_VALIDATE_EMAIL)) {
echo '<ul class="ErrorMessage"><li>البريد الإلكتروني المدخل غير صحيح *</li></ul>';
}
function checkName(){
$regUsername = $_POST['reg-username'];
if ( !preg_match('/^[A-Za-z][A-Za-z0-9]{5,31}$/', $regUsername)){
echo '<ul class="ErrorMessage"><li>اسم المستخدم يجب أن يبدأ بحرف *</li></ul>';
}
}
function checkExist(){
$regUsername = $_POST['reg-username'];
$regEmail = $_POST['reg-email'];
$connectToDB = mysql_connect('localhost', 'root', '') or die(mysql_error());
$selectDB = mysql_select_db('supermazad') or die(mysql_error());
$checkIfExist = mysql_query("SELECT * FROM users WHERE username LIKE '".$regUsername."' OR email LIKE '".$regEmail."' ");
if(mysql_num_rows($checkIfExist) > 0){
echo '<ul class="ErrorMessage"><li>اسم المستخدم/ البريد الإلكتروني موجود *</li></ul>';
}
}
?>
请参阅我的评论。有不同的方式来处理提交,通常页面上有多个表单。假设您的表单有一个提交按钮
<input type="submit" name="submit-form" value="Done">
为什么不使用jquery验证插件?这是一个很好的选择
检查此项:我知道您是php新手,但您必须记住,所有后端代码都必须得到保护。这就是为什么你需要做很多检查。此外,在处理数据库时,您需要保护代码不被注入。现在你会发现一些人告诉你用javascript来做,不要听他们的强> 任何人都可以在不使用js代码的情况下进行post查询,因此所有js检查都将被忽略。当然,在发送到服务器之前,您可以在浏览器中创建一层签入,但您也必须在服务器中进行签入 因此,当您检查发送到服务器的元素时,您必须检查它是否存在
(!=null)
,这可以通过函数isset
轻松实现:
if ( isset($_POST['reg-username'],$_POST['reg-email'],$_POST['reg-password'], $_POST['reg-confirmPassword'] ){
// Further checks
}else{
// call a function that will return an error message
error($PARAMETERS_NOT_SET)
}
在数据库查询中使用客户机参数时,必须记住的第二件事是检查是否有注入。这可能有点痛苦,这就是为什么您必须使用:
PS:在stackoverflow中看到阿拉伯语真是太酷了。我不知道你在期待什么。这不是问题,它缺少代码。您有函数,因此需要一个循环,该循环具有if-then-else块,该块使用验证函数检查表单是否已提交和验证。对于else语句,您应该返回表单,可能带有错误消息的注释。验证函数不应直接回显错误,而应将它们添加到表单中使用的数组变量(如果存在)。函数需要返回true(如果已验证),否则返回false。您的代码容易受到SQL注入的攻击。有关如何修复它的信息,请阅读。PHP中的
mysql.*
函数已弃用,不应使用。请阅读以获取有关为什么以及用什么替换它们的信息。
if ( isset($_POST['reg-username'],$_POST['reg-email'],$_POST['reg-password'], $_POST['reg-confirmPassword'] ){
// Further checks
}else{
// call a function that will return an error message
error($PARAMETERS_NOT_SET)
}
$statement ="SELECT * FROM users WHERE username LIKE :username OR email LIKE :email ";
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array("username"=>$regUsername,"email"=>$regEmail));
$resultList= $sth->fetchAll();