Erreur Session & header

Par FrenchGaming Team, il y a 10 ans


Bonjour,

Voila quand je suis sur wamp j'ai occune erreur et des que je passe sur un hébergeur j'obtient cette erreur suivante

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/frenchg1/public_html/shop/register.php:1) in /home/frenchg1/public_html/shop/lib/Session.php on line 18 Warning: Cannot modify header information - headers already sent by (output started at /home/frenchg1/public_html/shop/register.php:1) in /home/frenchg1/public_html/shop/lib/App.php on line 21

Mon Code :

<?php require 'lib/Autoloader.php'; \lib\Autoloader::register(); require 'lib/Authentification.php'; $db = \lib\App::getDatabase(); $captcha = new \lib\Recaptcha('6LeZuxoTAAAAAE7MiLHyFRczZtutAkyIOWw2Q6vj', '6LeZuxoTAAAAAC6Uaxao1D-ynzjhBZPFqwsUEkdi'); if(isset($_POST['add'])) { $errors = array(); $ip = $_SERVER['REMOTE_ADDR']; $validator = new \lib\Validator($_POST); $validator->isAlpha('pseudo', "Votre pseudo doit étres alphanumerique"); if($validator->isValid()) { $validator->isUniq('pseudo', $db, 'membres', "Le pseudo demandé est déjas pris"); } $validator->isEmail('email', "Votre email n'est pas valide"); if($validator->isValid()) { $validator->isUniq('email', $db, 'membres', "L'email demandé est déjas utilisé pour un autre compte"); } $validator->isConfirmed('password', "Les mot de passe ne corresponde pas"); if($validator->isValid()) { if($captcha->isValid($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']) === false) { \lib\App::getAuth()->register($_POST['pseudo'], $_POST['password'], $_POST['email'], $ip, $db); \lib\Session::getInstance()->setFlash('success', "Compte créer. Vous devez confirmé votre compte !"); \lib\App::redirect("login.php"); } else { \lib\Session::getInstance()->setFlash("danger", "Le captcha est invalide"); } } else { $errors = $validator->getErrors(); } } ?>

4 réponses

FrenchGaming Team, il y a 10 ans

La session demare que dans le constructeur

Lartak, il y a 10 ans

Bonsoir.
Montres nous ta classe Session, puisqu'il semblerait que ce soit elle qui gère les sessions.

FrenchGaming Team, il y a 10 ans

Voila ```
<?php

namespace lib;

class Session
{
static $instance;

static function getInstance(){
    if(!self::$instance){
        self::$instance = new Session();
    }
    return self::$instance;
}

public function __construct(){
    session_start();
}

public function setFlash($key, $message){
    $_SESSION['flash'][$key] = $message;
}

public function hasFlashes(){
    return isset($_SESSION['flash']);
}

public function getFlashes(){
    $flash = $_SESSION['flash'];
    unset($_SESSION['flash']);
    return $flash;
}

public function write($key, $value){
    $_SESSION[$key] = $value;
}

public function read($key){
    return isset($_SESSION[$key]) ? $_SESSION[$key] : null;
}

public function delete($key){
    unset($_SESSION[$key]);
}

}

TuxBoyBzh, il y a 10 ans

Bonjour,

Ton problème vient peut être du fait que ta session est déjà démarré, soir dans ton constructeur tu vérifie si ta session est déjà démarré avec un session_status == PHP_SESSION_ACTIVE tu n'a pas besoin de refaire un session_start().