PHP,AJAX的注册表格

我是新来的这一切让光秃秃的我。 我试图建立我的第一个PHP的网站,我真的想这样做的正确方法。 我工作所在的形式:http://www.bwgblog.com/signup。

我已经设置了以下形式:

<p><form action="/signup/register.php" method="post"> <label for="first_name">First Name</label> <input type="text" name="first_name" /> <label for="last_name">Last Name</label> <input type="text" name="last_name" /> <label for="company">Company</label> <input type="text" name="company" /> <label for="job_title">Job Title</label> <input type="text" name="job_title" /> <label for="phone">Phone</label> <input type="text" name="phone" /> <label for="email">Email</label> <input type="text" name="email" /> <label for="username">Choose a Username</label> <input type="text" name="username" /> <label for="password">Choose a Password</label> <input type="text" name="password" /> <label for="confirm_password">Confirm Your Password</label> <input type="text" name="confirm_password" /> <input type="submit" value="Get Started" /> </form>

这里是我的PHP页面,register.php:

<?php ini_set('display_errors', 1); error_reporting(E_ALL); $con = mysql_connect("localhost","*******","******"); //Replace with your actual MySQL DB Username and Password if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("bwgblog", $con); //Replace with your MySQL DB Name $first_name=mysql_real_escape_string($_POST['first_name']); $last_name=mysql_real_escape_string($_POST['last_name']); $company=mysql_real_escape_string($_POST['company']); $job_title=mysql_real_escape_string($_POST['job_title']); $phone=mysql_real_escape_string($_POST['phone']); $email=mysql_real_escape_string($_POST['email']); $username=mysql_real_escape_string($_POST['username']); $password=mysql_real_escape_string($_POST['password']); $confirm_password=mysql_real_escape_string($_POST['confirm_password']); $sql="INSERT INTO members (first_name,last_name,company,job_title,phone,email,username,password,confirm_password) VALUES ('$first_name','$last_name','$company','$job_title','$phone','$email','$username','$password','$confirm_password')"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "The form data was successfully added to your database."; mysql_close($con); ?>

我试图找出如何在AJAX增加,使得它给了我两件事。 1)为它的用户名现场检查实时为这一领域应该是唯一的,并且2)的能力有确认密码字段中呈现绿色的对勾,如果==口令字段的能力。

我一直在寻找一整天的如何做到这一点并不能得到一个明确的了解一下吧。 下面是这些文件的布局方式:

注册(文件夹) - >的index.php - > register.html.php - > register.php

--------------解决方案-------------

与PeterJCLaw在除了JavaScript框架的选择所有帐户同意。 这里是你可以用jQuery做到这一点:

// give the form an ID to use a better selector: ie: $('#myform')
// intercept form submit

$('form').submit(function(){

// check if passwords match; you might want to do more thorough validation
if($('input[name=password]').val()==$('input[name=confirm_password]').val()){

// make ajax post request and store the response in "response" variable
$.post('/signup/register.php', $(this).serialize(), function(response){

// process response here (assume JSON object has boolean property "ok"
if(response.ok==true){
// sweet, it worked!
alert('OK!');
}else{
// handle error
alert('Ooops');
}
}, 'json');

// stop the form from being submitted
return false;
}else{
// for the sake of simplicity
alert('Passwords don't match!);
}
});

1)的AJAX不需要后端是什么特别 - 这样的简单的解决方案有可能是有一个'usercheck.php'文件查询DB中传递的用户名,然后返回某种形式的真/假。 你可能想回复使用​​JSON(这是容易的,如果你有PHP 5 - 见json_encode)。

对于AJAX前端,你会发现它最简单的,如果你使用现有的框架(我用Mochikit和原型,双方似乎罚款),其中有几个。 这应该使您可以轻松装入服务器的响应。

如果您有AJAX使用GET而不是POST(这是简单的),那么你可以测试,只需查看页面以适当的查询字符串的响应。 在任何情况下使用萤火虫将允许您查看实时的调用。

2)有没有必要有密码检查AJAX - 可以使用普通的JavaScript来实现简单的:简单地比较两个输入的.value的性能。

看看jQuery的验证扩展。

这将简化这一切。 检查远程值也很简单。

一个相对较新的职位上这个与示例代码。

您可以上传jQuery来您的服务器,或谷歌代码承载它们。 使用谷歌的版本大大增加您的客户将已经下载了它也并可以使用自己的缓存副本的机会。

$fields = array('first_name','last_name','company','job_title','phone','email','username','password','confirm_password');

$dbfields = array(); $dbdata = array(); $dbfieldq = array(); $types = ''; //Setting Variable

foreach ($fields as $field){ //For Each Field
if (!isset($_POST[$field]){ header('Location: signup.php'); die('Please Fill in all fields, they are required'); } //Missing Field Error -- Doublecheck on serverside
array_push($dbdata, strip_tags($_POST[$field])); //Add Data - MySQLi Prepared Statements don't need to be escaped
array_push($dbfields,$field); //Add a field
array_push($dbfieldq,'?'); //Add a ?
$types += 's'; //Add a field type (string for all of these)
}

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db'); //Connect

if ($mysqli->connect_error) { //If there is a connect Error
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
$names = explode($dbfields); //Explode the Field Names
$questions = explode($dbfieldq); //Explode the ?
$stmt = $mysqli->prepare("INSERT INTO DBName ($names) VALUES ($questions)");
$params = $this->paramValues;
array_unshift($dbdata, implode($this->paramTypes);
call_user_func_array( array( $stmt, 'bind_param' ), $params);
$stmt->bind_param($types, $code, $language, $official, $percent);
$stmt->execute();
$mysqli->close();

一个更好的办法做PHP ...使用准备语句和循环准备的变量。

分类:php 时间:2015-03-15 人气:0
本文关键词: PHP,MySQL和AJAX
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.922 (s). 10 q(s)