javascript — редирект Php, js после успешной регистрации, вставляет пользователя, но не перенаправляет

<?php
$con = mysqli_connect("localhost", "root", "", "" ) or die("Neuspjelo spajanje");
function InsertUser(){  global $con;
if(isset($_POST['sign_up'])){
$name = mysqli_real_escape_string($con, $_POST['u_name']);
$pass = mysqli_real_escape_string($con,$_POST['u_pass']);
$email = mysqli_real_escape_string($con,$_POST['u_email']);
$country = mysqli_real_escape_string($con,$_POST['u_country']);
$gender = mysqli_real_escape_string($con,$_POST['u_gender']);
$b_day = mysqli_real_escape_string($con,$_POST['u_birthday']);
$date = date("m-d-Y");
$status = "unverified";
$posts = "No";

$get_email = "select * from users where user_email='$email'";
$run_email = mysqli_query($con, $get_email);
$check = mysqli_num_rows($run_email);


$insert = "insert into users (user_name, user_pass, user_email, user_country, user_gender, user_b_day,
user_image, register_date, last_login, status, posts) values
('$name','$pass', '$email', '$country', '$gender', '$b_day', 'default.jpg',
'$date', '$date', '$status', '$posts')";
$run_insert = mysqli_query($con, $insert);
$result = mysql_query($insert);

if($result){

echo "<script>alert ('You're successfully registered!')</script>";
echo "<script>window.open('home.php', '_self')</script>";
}






}

}
?>

-3

Решение

Вы не можете отобразить javascript и запустить его на странице, которая уже загружена. Это должно быть результатом вызова ajax на стороне клиента, когда ваши перенаправления происходят из ваших обратных вызовов ajax.
Если у вас все в порядке с отключением оповещения, вы можете просто выполнить перенаправление с php:

header('Location: home.php');

Для этого Ajaxy:

$.ajax({
type: "GET",
url: "your_insert_user.php"}).success(function(xhr) {
alert ("You're successfully registered!");
window.open('home.php', '_self');
}).fail(function (jqXHR, status, errorThrown) {
//something else here
});

Но почему вы хотите сделать ajax-вызов просто для перенаправления?
Кроме того, вам нужно выдать соответствующие ответы из вашего скрипта вставки:

if ($result) { echo ""; } //issues a "200 OK"else { header("HTTP/1.1 422 Unprocessable Entity"); } //fires the failure callback in ajax

Я бы передавал условный параметр GET или POST в home.php с некоторым значением и отображал там ваше сообщение.

1

Другие решения

Исходя из того, что вы публикуете выше, вы имеете дело с двумя отдельными проблемами здесь.

Вы говорите «он вставляет», поэтому я предполагаю, что это означает, что запрос mysql для вставки новой строки в вашу базу данных завершается успешно. Затем вы отправляете некоторый HTML-код, содержащий (несколько искаженный) фрагмент Javascript, в браузер, который должен отправить запрос на перенаправление в веб-браузер клиента, который не дает желаемого результата, видя, как вы пишете, что он » не будет перенаправлять «.

Имейте в виду, что перенаправление выполняется браузером, зависит от возможностей и / или настроек браузера и, в первую очередь, требует правильного JavaScript.

Как правильно запросить редирект из браузера? обсуждалось раньше на ТАК.

0

Прежде всего, удалите эту строку $ result = mysql_query ($ insert); затем измените ваш код и добавьте это, надеюсь, он будет работать:

$run_insert = mysqli_query($con, $insert);
if($run_insert){
echo "<script>alert ('You\'re successfully registered!')</script>";
echo "<script>window.open('home.php', '_self')</script>";
}
0
По вопросам рекламы [email protected]