Cannot modify header information - headers already sent by (...) - Was ist an diesem PHP-Skript falsch?

2 Antworten

Die Header muß man als erstes senden, bevor überhaupt irgendeine Ausgabe erfolgt (noch vor „<HTML>“ bzw. „<!DOCTYPE …>“). Ansonsten sendet der Server die Standard-Header und beginnt mit der Ausgabe; anschließend kann man die Header natürlich nicht mehr verändern, da sie ja bereits übermittelt wurden.

Es soll aber bei richtiger eingabe des passwortes passiren

0
@Lisa2003Lisa

Dann muß die Überprüfung des Kennworts auch an den Anfang, bevor Du anfängst irgendwelche Inhalte auszugeben, also: Zuerst Kennwort überprüfen, dann Header ausgeben und erst danach den Inhalt der Seite.

1
@SIGCONT

alternativ kann sie die Ausgabe auch zunächst in eine Variable packen und später ausgeben.

2
@Lisa2003Lisa

Wenn du nicht zu einer externen Seite leitest, kannst du den Inhalt der neuen Seite auch einfach via include(); inkludieren. Die Anmeldung kannst du dann via session oder cookie speichern bzw. merken. Und wenn der Cookie bzw. die Session gesetzt ist, wird weiterhin der include(); ausgegeben, ansonsten das Anmeldeformular.

Das mit dem header funktioniert so leider nicht, wie SIGCONT bereits geschrieben hat. Du kannst höchstens eine Javascript-Weiterleitung einbauen. Die funktioniert aber nicht bei jedem, weil nicht jeder JS aktiviert hat.

0

keine outputs vor der header angabe. sprich echo einfach unter den header part setzen

php zeichen verbieten?

hallo ich möchte in meinem taschenrechner dokument ändern, dass man ausschließlich nur zahlen eingeben kann also falls ein buchstabe oder ein zeichen eingegeben wird soll ein kurzer satz angezeigt werden wie "nur zahlen eingeben"
wie kann ich das am besten lösen?

hier mein quellcode

<!DOCTYPE html>
<html>
<head>
<!DOCTYPE html>

<html>

<head>

 <title>Taschenrechner</title>

</head>

<body>

<h2>Mein erster Taschenrechner</h2>

<hr><br />

<?php

if($_POST){

 $zahl1 = $_POST["zahl1"];

 $zahl2 = $_POST["zahl2"];

 $rechenart = $_POST["Rechenart"];
 
 include 'function.php';
 
 }

 switch($rechenart) {

     case "+":

          $ergebnis= addieren($zahl1, $zahl2);

     break;

     case "-":

          $ergebnis= subtrahieren($zahl1, $zahl2);

     break;

     case "*":

          $ergebnis= multiplizieren($zahl1, $zahl2);

     break;

      case "/":

          $ergebnis= dividieren($zahl1, $zahl2);

     break;

  }

 print "ergebnis ist ". $zahl1. $rechenart. $zahl2. "=". $ergebnis;


?>

<form action="case.php" method="post" >

 <p>Zahl 1:<input name="zahl1" value="<?php echo $ergebnis; ?>" size="30" maxlength="30"></p>

 <p>Zahl 2:<input name="zahl2" size="30" maxlength="30"></p>

 <input type="submit" value="Rechnen!">

 <p><input type="radio" name="Rechenart" value="+">addieren</p>

 <p><input type="radio" name="Rechenart" value="-">subtrahieren</p>

 <p><input type="radio" name="Rechenart" value="*">multiplizieren</p>

 <p><input type="radio" name="Rechenart" value="/">dividieren</p>

 </form>

<hr><br>

</body>

</html>
...zur Frage

Mehrere INSERT INTO Abfragen auf einmal?

Ich würde gerne ein Formular in eine Datenbank übertragen

$mandant = $_POST["mandant"];
$finanzprojektnummer = $_POST["fpnr"];
$Name = $_POST["Name"];
$anforderer = $_POST["sb_anforderer"];
$datum = $_POST["datum"];
$uhrzeit = $_POST["uhrzeit"];

$db = mysql_connect('host_server','User','password') or die (mysql_error()) ;
$connect = mysql_select_db('databank') or die (mysql_error()) ;

$sql = mysql_query ("INSERT INTO Tabelle1 (mandant,FP,Anforderung_von,Datum,Uhrzeit) VALUES ('".$mandant."','".$finanzprojektnummer."','".$anforderer."','".$datum."','".$uhrzeit."')
") or die (mysql_error()) ;

if($sql){ echo "Erfolgreich gesandt";}

Soweit so gut - der Code hierzu steht soweit. Nun muss ich in das Datenbankfeld "Name" den Inhalt einer anderen Tabelle Tabelle2 einfügen, wenn die Finanzprojektnummer gleich der Eingabe im Formular entspricht. Laut Internetrecherche sollte das folgendermaßen funktionieren:

INSERT INTO tabelle1 (Name) SELECT Name FROM tabelle2  WHERE finanzprojektnummer = '".$finanzprojektnummer."';

Mein Problem ist nun, dass ich beide Abfragen hintereinander wunderbar hinbekomme, aber beide Abfragen in einem Rutsch und somit im gleichen Datensatz bekomme ich leider nicht hin. Hat jemand vielleicht einen Tipp für mich?

...zur Frage

Php/Html: Input type=text auslesen erst nachdem etwas eingegeben wurde?

Folgender Beispielcode:

<?php
$db = "SELECT Drucker from Druckerliste;"; 
$result = mysqli_query($con, $db);
echo "Drucker:";
while($row = mysqli_fetch_array($result)) {
echo "<input list=\"Druckerliste\" name=\"Druckerliste\">";
echo "<datalist id=\"Druckerliste\">";
echo "<option value=\"".$row['Drucker']."\">"; }
?>

<?php
$db = "SELECT Patrone from Druckerliste WHERE Drucker = '".$_POST['Druckerliste']."';";
$result = mysqli_query($con, $db);
echo "Patrone:";
while($row = mysqli_fetch_array($result)) {
echo "<input list=\"Patronenauswahl\" name=\"Patronenauswahl\">";
echo "<datalist id=\"Patronenauswahl\">";
echo "<option value=\"".$row['Patrone']."\">"; }
?>

Also der Wert soll aus dem oberen Input ausgelesen werden, damit in dem Input darunter eine Datalist mit den dazugehörigen Patronen erscheint. In der Datenbank sind jedem Drucker eine oder auch mehrere Patronen zugeordnet.

Problem ist, sobald ich die Seite aufrufe, will er ja schon die untere Datalist erstellen. Zu dem Zeitpunkt hat der User ja aber noch keinen Drucker eingetragen.

Folge: Undefined Index: Drucker

Jetzt hab ich es mit einem Type=submit versucht, sodass der User halt immer einen button drücken muss und dann wird die zweite Datalist erst erstellt. Aber dann löscht er immer alle vorher eingegebenen Sachen...

Hat jemand zufällig eine elegantere Art oder einen weisen Rat für mich? Wäre demjenigen sehr dankbar! Grüße Jonas

...zur Frage

PHP Login, keine Fehlermeldung aber funktioniert trotzdem nicht!?

Ich habe ein Login programmiert.. Funktioniert aber nicht.. Kann mir jmd weiterhelfen?

Danke im Vorraus!

        require_once('zugang.php');
  
        $fehlermldg = "";
  
        //if (!isset($_SESSION['id'])) {
            if (isset($_POST['submit'])) {

    $msg = "";

    

        $mail = $_POST["mail"];

        $passwort = md5($_POST["passwort"]);

         if ($name == '' || $password == '') {

            $msg = "Du musst alle Felder ausfüllen";

        } else {

            $sql = "SELECT * FROM nutzer WHERE email = '$mail' AND passwort = '$passwort'";

            $query = mysql_query($sql);

     

            if ($query === false) {

                echo "Feler mit der Datenbank: " . mysql_error();

                exit;

            }

     

            if (mysql_num_rows($query) == 0) {

              $daten = mysqli_query($db, $sql);
                    $zeile = mysqli_fetch_array($daten);

                header('Location: /memberarea.php');
                // Login erfolgreich, also die Cookies setzen und den Benutzer zur Hauptseite umleiten
                        $_SESSION['id'] = $zeile['id'];
                        $_SESSION['nutzername'] = $zeile['nutzername'];
                        setcookie('id', $zeile['id'], time() + (60 * 60 * 24 * 30));   // Verfällt in 30 Tagen
                        setcookie('nutzername', $zeile['nutzername'], time() + (60 * 60 * 24 * 30));  // Verfällt in 30 Tagen
                exit;

            }

     

            $msg = "E-Mail oder Passwort falsch";

        }

    }
//}

    
                    
            
                    
    ?>
...zur Frage

Was möchtest Du wissen?