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

Frage Headers already sent Problem

BDG

Mitglied
Hey Leute, bei mir kommt wenn ich einen Cookie setzen will immer das Problem, dass die Headers already gesendet wurden...
Aber ich komme nicht drauf was da falsch ist. Der Fehler tritt in Zeile 11 auf:

PHP:
<?php
include "core/functions.php";

if (!isset ($_COOKIE["user_id"]))
{
    if (isset ($_POST["mail"]) && isset ($_POST["pass"]))
    {
        $user_id = login($_POST["mail"], $_POST["pass"]);
        if ($user_id == -1) header('Location: login.php?fail');
        else {
            setcookie("user_id", $user_id, time()+60*60*24*420);
        }
    }
    else $user_id = -1;
}
else $user_id = $_COOKIE["user_id"];

Und hier nochmal die includete klasse und die login funktion die aufgerufen wird:

PHP:
<?php
$conn;   
connect();

function connect ()
{
    global $conn;
    try {
        $conn = new PDO('...;dbname=...', '....', '....');
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }
}

function login ($mail, $pass)     //Login wird versucht, bei success wird user_id returned
{
    global $conn;
    $query = $conn->prepare('SELECT `id` FROM `user` WHERE `mail` = :m AND `pass` = :p');
    $query->execute(array(
        ':m' => $mail,
        ':p' => md5(md5($pass))
    ));
    $result = $query->fetchAll();
    if (count($result)) { foreach($result as $row){ return $row["id"]; } }
    else return -1;
}

Ich hoffe jemand kann mir helfen. Es wird doch vorher garkein output oder so gemacht! Und auch kein html! Warum kommt der Fehler? :/
 
Werbung:
Google -> headers already sent -> 12.300.000 Ergebnisse
Sollte eigentlich reichen, oder?

Eine verstümmelte Fehlermeldung zu posten ist nicht gerade sinnvoll. Sieh' dir den Teil der Fehlermeldung mit output started an, daran erkennst du, wo schon eine Ausgabe stattgefunden hat, die aber nicht sein dürfte.

Und zum PHP-Code:
was soll die Zeile

$conn;

Und globale Variablen sind bäh, das macht man nicht!
 
der output startet in Zeile 1. Da steht aber nur <?php. Und ich hab das Dokument schon mehrfach in anderen kodierungen angeschaut und es sind auch keine Leerzeichen oder so da.
 
Werbung:
Dann schau dir nicht die Dateien sondern den HTTP-Header an, der ausgeliefert wird. Vermutlich steht dort irgendetwas was diese Meldung verursacht, was aber nicht zwingend mit deinen PHP-Dateien zu tun hat.
 
Werbung:
Tatsächlich ohne BOM klappt, woran liegt das?! :eek:
Jetzt kann ich halt keine Umlaute mehr schreiben :/ Aber das bekomm ich schon wieder hin.
 
Werbung:
In der Datei sind bei UTF-8 mit BOM Steuerzeichen () am Anfang, die nicht von jedem Editor angezeigt werden.

Wieso solltest du keine Umlaute mehr schreiben können? Den Zusammenhang verstehe ich nicht.
 
Als ich es geändert habe waren kurz die Umlaute wieder komisch, habs aber schon gefixed.
Okay, vielen Dank für die Hilfe :) kein BOM, merk ich mir.
 
NotePad++ hilft da wunderbar. Und NIEMALS den Windows Editor dafür nehmen, sonst hat man immer wieder und wieder dieses Problem.
 
Werbung:
Nachdem das Thema bei mir in den Unbeantworteten/Neuen Posts aufgetaucht ist....
Im Code oben ist BOM eine Möglichkeit, $conn; eine andere. Sollte jemand nach diesem Problem suchen...

Aber ok, suchen ist unmodern, bin halt altmodisch, was das angeht.
 
Werbung:
Zurück
Oben