我正在创建一个PHP登录脚本。到目前为止,我只参与了注册工作。
我的问题是,如何在不刷新页面的情况下处理PHP验证?我想输出用户错误输入信息的反馈,但我不想刷新页面。这是因为我使用的是AJAX,所以我希望它能在页面上输出。
这可能吗?
请看这里,如果您“注册”而未填写任何方框,则会显示一些错误消息。问题是它重新加载页面。有没有办法不重新加载页面仍然显示这些数据?
http://marmiteontoast.co.uk/fyp/login-register/test/index.php
这是仅用户名的if语句的示例。这也与所有其他字段重复:
if(isset($_POST['username'])){
$username = mysql_real_escape_string(trim($_POST['username']));
if(strlen($username) > 3){
// passed
if(strlen($username) < 31){
// passed
} else {
$_SESSION['status']['register']['error'][] = 'The Username is greater than 30 characters.';
}
} else {
$_SESSION['status']['register']['error'][] = 'The username is less than 4 characters.';
}
} else {
$_SESSION['status']['register']['error'][] = 'The Username is not entered.';
}
一旦通过所有验证,它就会:
header('Location:index.php');
错误在索引页面上输出:
<?php
if(isset($_SESSION['status']['register']['error'])){
?>
<div class="alert alert-error">
<p><strong>There's a problem!</strong><br /><br />
<?php
foreach($_SESSION['status']['register']['error'] as $error){
// Outputs list of all errors, breaks to new line
echo $error . '<br />';
}
?>
</p>
1。是否可以使用PHP动态输出这些?
2。我可以在前端进行验证,然后将其传递给PHP以传递给数据库吗?
2a上。我如何处理运行用户名检查我是否在前端执行?
答案 0 :(得分:1)
是的,但这是一种可行的做法。验证两者的最佳方法。
2a上。我相信你需要使用一个数据库。
这些教程可能会帮助你。
Easy jQuery Ajax PHP Contact Form
How to create a Sign Up form registration with PHP and MySQL
答案 1 :(得分:1)
这是我前几天真正做的事情!
我有一个名为“register.js”的文件,一个名为“register_process.php”的文件和一些html文件。
我的服务器的设置方式:
html_docs (www): ajax: register_process.php js: register.js jquery-1.6.2.js register.html
所以在我的register.html中,我的代码看起来像这样:
<script type="text/javascript" src="js/md5.js"></script> <!-- this is in my head -->
<script type="text/javascript" src="js/jquery-1.6.2.js"></script>
<!-- everything else is in my body -->
<div id="error_message" style="display: none;">
</div>
<div id="register_div">
<input type="text" name="username" id="username"><br>
<input type="password" name="password" id="password"><br>
<input type="submit" name="submitbutton" id="reg_button" value="Register" onclick="AttemptRegisterAjax(); return false;"><br>
</div>
这会调用register.js文件中的函数。这些功能看起来像这样:
function AttemptAjaxRegister(){
var url = "ajax/register_process.php?";
url += "time=" + (new Date().getTime()) + "&un=";
var username_ele = document.getElementById("reg_username");
var password_ele = document.getElementById("reg_password");
var error_ele = document.getElementById("error_message");
var username = username_ele.value;
var password = password_ele.value;
if((username.length >=4) && (password.length >= 4)){
url += encodeURIComponent(username) + "&pw=" + encodeURIComponent(password);
console.log(url);
$.get(url, function(data, status, xhr){
data = data.trim();
if(data != "true"){
error_ele.innerText = data;
error_ele.style = "display: block;";
}else{
window.location = "/profile.php";
}
});
}else{
error_ele.innerText = "Please make sure your password and username are both 4 characters long";
error_ele.style = "display: block;";
}
}
现在,在你的php里面,你会想要设置所有内容,就像你注册它一样,但你实际上只想调用die($YourErrorMessage);
或注册成功,{{ 1}}