php 到 AJAX 表单提交

标签 php jquery mysql ajax forms

AJAX 新手,我得到了这段代码,请帮忙,即使密码不匹配,我的代码也会继续转到 sec_reg.php 页面,或者即使表单有效,我也希望用户留在当前页面上如果他提交表格。这是我的代码

这是我的表格

    <h4>ADD ANOTHER ADMIN</h4>
     <form action="sec_reg.php" method="post" name="registration_form">
     <br>
     <p>

     <strong>Email</strong>
     <br>
     <br>
    <input class="acc_input" type="text" id="email" name="email"placeholder="Email">

    </p>
    <br>
    <p>
   <strong>        Password</strong>
    <br>
    <br>
    <input class="acc_input" type="password" name="password" id="password" placeholder="Password">
    <br /><br />
    <strong>        Confirm Password</strong>
    <br>
    <br>
    <input class="acc_input" type="password" name="cpassword" id="cpassword" placeholder="Confirm Password">

    <input type="hidden" name="p" id="p" value="">
    <br>

   </p>
    <button type="submit" class="btnsubmit" onclick="formhash(this.form,  
 this.form.password, this.form.p);" ><strong>Register</strong></button>

    </form>

这里是forhash的脚本(为了安全,密码需要在发送前进行hash)

<script src="sha512.js"></script>
<script>
function formhash (form, password)
{
 var pass1 = document.getElementById("password").value;
var pass2 = document.getElementById("cpassword").value;
var ok = true;
if (password != cpassword) {
    //alert("Passwords Do not match");
    document.getElementById("password").style.borderColor = "#E34234";
    document.getElementById("cpassword").style.borderColor = "#E34234";
    ok = false;

}
else {


var p = document.createElement("input");    
form.appendChild(p);
p.name="p";
p.type="hidden";
p.value=hex_sha512(password.value);
password.value="";
form.submit();

 }
  }
 </script>

这是我的 sec_reg.php

<?php
// Include database connection and functions here.
include '../Connections/mabini150_Conn.php';
if (isset($_POST['p']))
{
include 'login_Function.php';
 // The hashed password from the form
$password = $_POST['p'];
// Create a random salt
$random_salt = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true));
// Create salted password (Careful with the chilli)
$password = hash('sha512', $password.$random_salt);
$username='nousername';
$email = $_POST['email'];
if ($insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password, salt) VALUES (?, ?, ?, ?)"))
{
$insert_stmt->bind_param('ssss', $username, $email, $password, $random_salt);
// Execute the prepared query.
$insert_stmt->execute();

最佳答案

调用formhash()后需要返回false;在您的 onclick 属性中。

<button type="submit" class="btnsubmit"
    onclick="formhash(this.form, this.form.password, this.form.p); return false;" ><strong>Register</strong></button>

否则无论如何按钮都会提交。

关于php 到 AJAX 表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21321505/

相关文章:

javascript - 在 Ajax 请求上设置 Cookie 到外部域

javascript - 用户滚动到页面底部超时后添加类

javascript - Jquery 在悬停时淡出 <IMAGE 背景>?

php - 我应该创建另一个表列还是有其他方法可以做到这一点?

php - 如何通过 SSL 使用 mysqli 连接

php - 如何接收 jQuery AJAX 响应中的错误?

php - 为什么mysql的结果总是得到正值?

PHP-错误-MySQL

javascript - 未从下拉列表中选择任何值后如何显示错误消息?

php - 使用准备好的语句构建 PDO 动态查询