• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage header-Location funktioniert bei 1&1 nicht

sebjel

Neues Mitglied
Hallo,

ich habe eine Webseite via localhost gebastelt und so weit funktionierte alles sehr gut. Nun habe ich die Seite aber bei 1&1 veröffentlicht und die header-Location funktioniert nicht mehr.

Hier ist mein Code, der zu einem Registrierungsformular gehört. Sind Fehler im Formular, wird der User zurück zur gleichen Seite geleitet, sind keine Fehler mehr vorhanden, wird er zu einer Bestätigungsseite geleitet:

Code:
<?php
$fnameErr = $lnameErr = $emailErr = $pwErr = $pw_confErr = "";
$fname = $lname = $email = $pw = $pw_conf = "";

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

if (isset($_POST["register"])) {
  if (empty($_POST["fname"])) {
    $fnameErr = "(Please submit first name)";
  } 
  else {
    $fname = test_input($_POST["fname"]);
  }

  if (empty($_POST["lname"])) {
    $lnameErr = "(Please submit last name)";
  } 
  else {
    $lname = test_input($_POST["lname"]);
  }

  if (empty($_POST["email"])) {
    $emailErr = "(Please submit email address)";
  } 
  else {
    $email = test_input($_POST["email"]);
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "(Email address is not valid)"; 
    }
  }

  include ("script/registration_email_compare.php");

  if (empty($_POST["pw"])) {
    $pwErr = "(Please submit password)";
  } 
  else {
    $pw = test_input($_POST["pw"]);
    $pwHash = password_hash($pw, PASSWORD_DEFAULT);
  }

  if (empty($_POST["pw_conf"])) {
    $pw_confErr = "(Please confirm password)";
  } 
  else {
    $pw_conf = test_input($_POST["pw_conf"]);
  }

  if ($_POST["pw"] !== $_POST["pw_conf"]) {
    $pwErr = "(Please confirm password)";
    $pw_confErr = "";
  } 

  if (empty($fnameErr) && empty($lnameErr) && empty($emailErr) && empty($pwErr) && empty($pw_confErr))
  {
    ob_start();
    include ("script/registration_db_add.php"); 
    include ("script/registration_send_mail.php");
    header("Location: registration_success.php");
    exit;
  }
}
?>

Momentan wird zwar der User in der DB aufgenommen und erhält auch eine Mail, er wird aber nicht zu registration_success weitergeleitet. Stattdessen landet er wieder auf der Registrierungsseite, die dann aber komplett leer ist.

Wäre super, wenn ihr helfen könntet.
 
Werbung:
Schreibe bitte mal an den Anfang des Scriptes folgende Zeilen:

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

und rufe dann das Script erneut auf. Vielleicht bekommt man so einige Hinweise.
 
Danke für die Antwort!

Es kam folgende Meldung:

Warning: Cannot modify header information - headers already sent by (output started at /code-details/registration.php:10) in /code-details/registration_check_data.php on line 67

Mein HTML-Code sieht übrigens so aus:

Code:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Titel</title>
<link type="text/css" rel="stylesheet" href="">
</head>

<body>
  <?php
      include ("script/registration_check_data.php");
  ?>

  <header>
    <a href="../index.php"><img id="logo_icon" src="../pictures/logo_icon.svg"></a>
    <h1>Registration</h1>
  </header>   
   
  <div id="content">
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" 

id="registration_form">

      <div id="first_name">
        <p class="input_description">  First Name <span class="error_message"> <?php echo $fnameErr;?

></span></p> 
        <input autofocus class="input_registration" type="text" name="fname" size="50" maxlength="35" 

value="<?php echo $fname;?>"/>
      </div>

      <div id="last_name">
        <p class="input_description">  Last Name <span class="error_message"> <?php echo $lnameErr;?

></span></p>
        <input class="input_registration" type="text" name="lname" size="50" maxlength="35" value="<?php 

echo $lname;?>"/>
      </div>

      <div id="email">
        <p class="input_description">  Email Address <span class="error_message"> <?php echo 

$emailErr;?></span></p>
        <input class="input_registration" type="text" name="email" size="50" maxlength="35" value="<?php 

echo $email;?>"/>
      </div>

      <div id="passwords">
        <div id="pw">
          <p class="input_description">  Password <span class="error_message"> <?php echo $pwErr;?

></span></p>
          <input class="pw_input" class="input_registration"  type="password" name="pw" size="50" 

minlength="8"/>
        </div>

        <div id="confirm_pw">
          <p class="input_description">  Confirm Password <span class="error_message"> <?php echo 

$pw_confErr;?></span></p>
          <input class="pw_input" class="input_registration"  type="password" name="pw_conf" size="50" 

minlength="8"/>
        </div>
      </div>

      <img id="captcha" src="../pictures/captcha_placeholder.png">
      <input type="submit" name="register" value="Register" class="action"/>
    </form>
  </div>
</body>

</html>
 
Werbung:
Vor einem header darf nichts an den Browser gesendet werden, was aber passiert

Statt des headers
PHP:
      $goto = "registration_success.php";
      echo '<meta http-equiv="refresh" content="0;URL='.$goto.'">';
allerdings ist das eine Krücke, behebe (wenn leicht möglich) besser den Fehler!
 
Zurück
Oben