提交表单时,如何在浏览器显示 php 中隐藏 echo 的输出?我使用 jquery validate 进行验证
How to hide from browser's display the output of echo in php when the form is submitted? I used jquery validate for validation
我想在注册新用户时隐藏页面顶部 'echo' 的输出。另外,我在我的脚本中使用 jQuery-validate remote。我也试过 ob_start()
和 ob_end_clean()
来隐藏它,但它不会将所有数据插入数据库。请帮助我,非常感谢你。
if(isset($_POST['uname'])){
$uname = mysqli_real_escape_string($conn, $_POST['uname']);
$query = "SELECT * from tbl_users where Username = '$uname'";
$result = mysqli_query($conn,$query) or die(mysqli_error($conn));
if(mysqli_num_rows($result) > 0){
echo "false";
}
else {
echo "true";
}
}
//on submit
if(isset($_POST['register'])){
$fname = mysqli_real_escape_string($conn, $_POST['fname']);
$lname = mysqli_real_escape_string($conn, $_POST['lname']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$uname = mysqli_real_escape_string($conn, $_POST['uname']);
$pwd = mysqli_real_escape_string($conn, $_POST['pwd']);
$pwd = md5($pwd);
$sql = "SELECT * FROM tbl_users WHERE Username='$uname'";
$checkRows = mysqli_query($conn, $sql) or die(mysqli_error($conn));
if(mysqli_num_rows($checkRows) > 0){
echo "You are already registered";
}
else {
$query = "INSERT into tbl_users(Firstname,Lastname,Email,Username,Password) VALUES ('$fname','$lname','$email','$uname','$pwd')";
$result = mysqli_query($conn, $query) or die(mysqli_error($conn));
echo "REGISTERED SUCCESSFULLY";
mysqli_close($conn);
}
}
这是我的脚本。请帮助我。
$('#registration-form').validate({
rules: {
uname: {
minlength: 6,
required: true,
alphanumeric:true,
remote: {
url: 'includes/registration.php',
type: "post"
}
}
});
根据您的解释,我了解到您有一个由 php 文件生成的页面。该页面也从 JavaScript/AJAX 调用。当通过 AJAX 调用时,它需要 true/false 输出,以便 JavaScript 中的验证代码可以工作。但是,当它只是生成一个页面时,输出不应该在那里。您的意思是 true/false 输出是有条件的。因此,PHP 代码必须有办法知道它是否被 JavaScript 调用。
如果我误解了你的问题,请更新你的问题。
一种方法是在从 AJAX 调用时传递另一个参数。
$isAjax = $_GET['isAjax'] ?? false;
if(isset($_POST['uname'])){
$uname = mysqli_real_escape_string($conn, $_POST['uname']);
$query = "SELECT * from tbl_users where Username = '$uname'";
$result = mysqli_query($conn,$query) or die(mysqli_error($conn));
if(mysqli_num_rows($result) > 0){
if ( $isAjax ) echo "false";
}
else {
if ( $isAjax ) echo "true";
}
}
然后,当您从 JavaScript 调用它时,告诉它您想要输出。
$('#registration-form').validate({
rules: {
uname: {
minlength: 6,
required: true,
alphanumeric:true,
remote: {
url: 'includes/registration.php?isAjax=1',
type: "post"
}
}
});
我所做的是在我的脚本中添加一个参数,然后将其传递到我的 php 文件中。
$('#registration-form').validate({
rules: {
uname: {
minlength: 6,
required: true,
alphanumeric:true,
remote: {
url: 'includes/registration.php',
type: "post",
data: {
'username_check': 1,
uname: function (){
return $('#registerUsername').val();
}
}
}
}
});
这是我更新的 php 文件。我调用了我在脚本中创建的参数。
if(isset($_POST['username_check'])){
$uname = mysqli_real_escape_string($conn, $_POST['uname']);
$query = "SELECT * from tbl_users where Username = '$uname'";
$result = mysqli_query($conn,$query) or die(mysqli_error($conn));
if(mysqli_num_rows($result) > 0){
echo "false";
}
else {
echo "true";
}
}
我想在注册新用户时隐藏页面顶部 'echo' 的输出。另外,我在我的脚本中使用 jQuery-validate remote。我也试过 ob_start()
和 ob_end_clean()
来隐藏它,但它不会将所有数据插入数据库。请帮助我,非常感谢你。
if(isset($_POST['uname'])){
$uname = mysqli_real_escape_string($conn, $_POST['uname']);
$query = "SELECT * from tbl_users where Username = '$uname'";
$result = mysqli_query($conn,$query) or die(mysqli_error($conn));
if(mysqli_num_rows($result) > 0){
echo "false";
}
else {
echo "true";
}
}
//on submit
if(isset($_POST['register'])){
$fname = mysqli_real_escape_string($conn, $_POST['fname']);
$lname = mysqli_real_escape_string($conn, $_POST['lname']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$uname = mysqli_real_escape_string($conn, $_POST['uname']);
$pwd = mysqli_real_escape_string($conn, $_POST['pwd']);
$pwd = md5($pwd);
$sql = "SELECT * FROM tbl_users WHERE Username='$uname'";
$checkRows = mysqli_query($conn, $sql) or die(mysqli_error($conn));
if(mysqli_num_rows($checkRows) > 0){
echo "You are already registered";
}
else {
$query = "INSERT into tbl_users(Firstname,Lastname,Email,Username,Password) VALUES ('$fname','$lname','$email','$uname','$pwd')";
$result = mysqli_query($conn, $query) or die(mysqli_error($conn));
echo "REGISTERED SUCCESSFULLY";
mysqli_close($conn);
}
}
这是我的脚本。请帮助我。
$('#registration-form').validate({
rules: {
uname: {
minlength: 6,
required: true,
alphanumeric:true,
remote: {
url: 'includes/registration.php',
type: "post"
}
}
});
根据您的解释,我了解到您有一个由 php 文件生成的页面。该页面也从 JavaScript/AJAX 调用。当通过 AJAX 调用时,它需要 true/false 输出,以便 JavaScript 中的验证代码可以工作。但是,当它只是生成一个页面时,输出不应该在那里。您的意思是 true/false 输出是有条件的。因此,PHP 代码必须有办法知道它是否被 JavaScript 调用。
如果我误解了你的问题,请更新你的问题。
一种方法是在从 AJAX 调用时传递另一个参数。
$isAjax = $_GET['isAjax'] ?? false;
if(isset($_POST['uname'])){
$uname = mysqli_real_escape_string($conn, $_POST['uname']);
$query = "SELECT * from tbl_users where Username = '$uname'";
$result = mysqli_query($conn,$query) or die(mysqli_error($conn));
if(mysqli_num_rows($result) > 0){
if ( $isAjax ) echo "false";
}
else {
if ( $isAjax ) echo "true";
}
}
然后,当您从 JavaScript 调用它时,告诉它您想要输出。
$('#registration-form').validate({
rules: {
uname: {
minlength: 6,
required: true,
alphanumeric:true,
remote: {
url: 'includes/registration.php?isAjax=1',
type: "post"
}
}
});
我所做的是在我的脚本中添加一个参数,然后将其传递到我的 php 文件中。
$('#registration-form').validate({
rules: {
uname: {
minlength: 6,
required: true,
alphanumeric:true,
remote: {
url: 'includes/registration.php',
type: "post",
data: {
'username_check': 1,
uname: function (){
return $('#registerUsername').val();
}
}
}
}
});
这是我更新的 php 文件。我调用了我在脚本中创建的参数。
if(isset($_POST['username_check'])){
$uname = mysqli_real_escape_string($conn, $_POST['uname']);
$query = "SELECT * from tbl_users where Username = '$uname'";
$result = mysqli_query($conn,$query) or die(mysqli_error($conn));
if(mysqli_num_rows($result) > 0){
echo "false";
}
else {
echo "true";
}
}