Autor Zpráva
Vilak
Profil
Zdarec. Mám dokument index.php, který začíná takto:
<?php
    include "include/session.php";
    include "include/db/db.php";
?>
<!DOCTYPE html>
a píše mi to toto: Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /data/web/virtuals/138112/virtual/www/index.php:1) in /data/web/virtuals/138112/virtual/www/include/session.php on line 2

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /data/web/virtuals/138112/virtual/www/index.php:1) in /data/web/virtuals/138112/virtual/www/include/session.php on line 2


session.php:
<?php 
    session_start();
    if (isset($_GET['logout']) && $_GET['logout'] == "odhlasit_se") {
        @$login = $_SESSION['login'];
        $stmt = $conn->prepare("UPDATE `users` SET `last_login` = CURRENT_TIMESTAMP WHERE `login` = '$login'");
        $stmt->execute();

        $_SESSION['login'] = '';
        $_SESSION['last_login'] = '';
        unset($_SESSION['login']);
        unset($login);
        unset($_SESSION['last_login']);
        unset($last_login);
    }
?>

db.php:
<?php 
    $dbname = "xxx";
    $servername = "xxx";
    $username = "xxx";
    $password = "xxx";

    try {
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch (PDOExcetion $e) {
        echo "Připojení selhalo: " . $e->getMessage();
    }
?>
Na localhostu (XAMPP) mi to běželo normálně, na webhostingu u weodsu už nikoli.

Kde je chyba? Předem děkuji za odpovědi.
Radek9
Profil
Vilak:
Zkontroluj, že na začátku těch souborů není BOM. PHP s tím občas mívá problém.
Vilak
Profil
To je co? Jak to mám zkontrolovat?
Davex
Profil
Vilak:
To je co?
Jak už jsi určitě našel sám, tak je to popsané v nejčastějších potížích s PHP, protože se na to pořád někdo ptal. Kdybys to náhodou přehlédl, tak chyba „headers already sent by“ je tam popsaná také. Teď už určitě také víš, že to způsobil BOM v souboru index.php a oprava uložením souboru bez BOM už byla snadná. Není-liž pravda?
Vilak
Profil
Díky. Ale jaktože mi to na XAMPP šlo a při vložení na wedos mám najednou v každém souboru tento BOM?
Jinak pro budoucí neznalce - jde to odstranit pomocí hexploreru.
Davex
Profil
Vilak:
Ale jaktože mi to na XAMPP šlo a při vložení na wedos mám najednou v každém souboru tento BOM?
BOM tam byl od začátku, ale nevadilo to, protože v XAMPPu je jiná konfigurace PHP (zapnutý output_buffering) než na webhostingu. PHP skripty se mají psát tak, aby nebyly závislé na nastavení PHP.
leorond
Profil
Já používám Eclipse a nemám s BOM problém ale třeba v Notepad++ lze BOM také dobře odstranit.

Ale třeba na Wedos jsem s tím problém měl a na Best hosting zase ne.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: