Заголовок PHP не перенаправляет - PullRequest
5 голосов
/ 18 июня 2011

Мой заголовок не будет перенаправлен. После выполнения кода он просто пуст и не выполняет перенаправление. В файле нет пробелов. Код работает совершенно правильно, кроме перенаправления.

Этот код вызывается при отправке формы.

if(!empty($_POST['addSubscriber'])){
  $name = $_POST['name'];
  $email = $_POST['email'];
  if(!empty($name) && !empty($email) && eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email) != FALSE){
    $conn = connect();
    $sql = "SELECT id FROM subscribers WHERE email=?";
    if($stmt = $conn->prepare($sql)){
      $stmt->bind_param("s", $email);
      $stmt->execute();
      if($stmt->fetch()){
        header("Location: http://bcp350.org.uk/index.php?message=1");
      } else {
        $password = md5(uniqid());
        $sql2 = "INSERT INTO subscribers(name, email, password) VALUES(?, ?, '$password')";
        if($stmt2 = $conn->prepare($sql2)){
          $stmt2->bind_param("ss", $name, $email);
          $stmt2->execute();
          if($stmt2->affected_rows == 1)
            header("Location: http://bcp350.org.uk/index.php?message=1");
        }
      }
    }
  } else {
    header("Location: urlnotallowedbecauseofstackoverflowlimit");
  }
}

Ответы [ 3 ]

8 голосов
/ 18 июня 2011

Согласно документации PHP для header :

Помните, что header () должна быть вызвана перед отправкой любого фактического вывода, либо обычными HTML-тегами, либо пустыми строками вфайл или из PHP.Это очень распространенная ошибка при чтении кода с помощью функций include () или require (), или другой функции доступа к файлу, с пробелами или пустыми строками, которые выводятся до вызова header ().Та же проблема существует при использовании одного файла PHP / HTML

Вы уверены, что на страницу до вызова header?

не выводится никакой информации
3 голосов
/ 18 июня 2011

Если в вашем коде произойдет любое из следующих событий, все вызовы header() будут обойдены:

  1. $ _ POST ['addSubscriber'] пусто
  2. $ conn-> prepare ($ sql) возвращает ложь
  3. $ conn-> prepare ($ sql2) возвращает ложь
  4. $ stmt2-> disabled_rows не сравнивается с 1

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

0 голосов
/ 08 мая 2013

используйте этот код в самом начале вашей php-страницы

<?php

ob_start (); ?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...