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();
}
}
?>
Bonsoir.
Montres nous ta classe Session
, puisqu'il semblerait que ce soit elle qui gère les sessions.
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]);
}
}
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().