2013-06-20 3 views
0

Я пытаюсь сделать перенаправление PHP после того, как мой контент выполнил, однако я не могу получить код для выполнения.Перенаправление PHP после выполнения контента?

Если я загружаю это, он перенаправляет страницу, но ничего не добавляет в базу данных. Если я прокомментирую строку перенаправления заголовка, он вводит данные в мою базу данных.

Как я могу заставить PHP запускать и выполнять, а затем перенаправлять страницу?

<?php require("gplus.php"); ?> 
<?php require("database.php");?>  
<?php if(isset($personMarkup)): ?> 
<?php 
$checkuser = "SELECT gid FROM user WHERE gid = '$id'"; 
$updateuser = "UPDATE user SET name = '$name', pic = '$img' WHERE gid = '$id'"; 
$adduser = "INSERT INTO user (gid, name, pic) VALUES ('$id','$name','$img')"; 
$checkuserrlt = mysqli_query($con, $checkuser); 


if(mysqli_num_rows($checkuserrlt) > 0) { 
    $result = mysqli_query($con, $updateuser) or die(mysqli_error()); 
} else { 
    $result = mysqli_query($con, $adduser) or die(mysqli_error()); 
} 
?> 
<?php endif ?> 

<? 
mysqli_close($con); 
?> 
<?php 
header('Location: http://google.com'); 
exit(); 
?> 
+2

Сторона примечания: вам не нужны 90% ваших '' тегов – jterry

+0

Да. Если я закомментирую строку заголовка, то она выполняется отлично. @jterry - Да, просто пытаюсь заставить это работать, прежде чем прибирать. Слияние содержимого. – K20GH

+0

Код хороший, но помните, если вы собираетесь использовать html, вы должны отправить заголовки перед запуском html. –

ответ

5

Когда вы делаете:

<?php endif ?> 

<? 

Вы вывода контента в вашем браузере, в этом случае новая строка. Когда вы это сделаете, PHP отправит HTTP-заголовки обратно клиенту, и становится невозможным добавлять новые заголовки. Вот почему ваша функция header() не будет работать.

Открывайте и закрывайте свои теги PHP один раз. <?php в начале вашего скрипта, ?> в конце. Кроме того, вы должны увидеть сообщение об ошибке, убедитесь, что они включены (в разработке только, вы не хотите, чтобы сообщения об ошибках в производстве):

error_reporting(-1); 
ini_set('display_errors', -1); 

Если вы позволили сообщения об ошибках, то, конечно, эта ошибка сообщение:

Предупреждение: не удается изменить информацию в заголовке - заголовки уже прислал (выход начался в /some/file.php:12) в /some/file.php на линии 23

Вы можете подробнее об этой ошибке: How to fix "Headers already sent" error in PHP

+0

Хороший улов - я пропустил пробелы – jterry

Смежные вопросы