[PHP] Prolème de header
Nixial
-
Nixial -
Nixial -
Bonjour,
Je viens de terminer mon application php, et je suis en train de la mettre sur internet.
Problème, lorsque que j'essai de me connecter, ça me mets l'erreur suivante :
Warning: Cannot modify header information - headers already sent by (output started at /www/appgestion/php/objet/conf.php:60) in /www/appgestion/php/page/formCreation.php on line 65
Je vous mets conf.php :
<?php
class Conf
{
//variables globales de l'application.
private $sqlHost = 'xxxx:xx'; //adresse du serveur SQL
private $sqlUser = 'xxxx'; //utilisateur SQL
private $sqlPass = 'xxxx'; //mot de passe SQL
private $sqlBase = 'xxxx'; //base de donnée SQL
// instance de la classe
private static $instance;
// constructeur privé ; empêche la création directe d'objet
private function __construct()
{
}
//singleton
public static function singleton()
{
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
public function getSqlHost() {
return $this->sqlHost;
}
public function getSqlUser() {
return $this->sqlUser;
}
public function getSqlPass() {
return $this->sqlPass;
}
public function getSqlBase() {
return $this->sqlBase;
}
// Exemple d'une méthode
public function bark()
{
echo 'Woof!';
}
// Prévient les utilisateurs sur le clônage de l'instance
public function __clone()
{
trigger_error('Le clônage n\'est pas autorisé.', E_USER_ERROR);
}
}
?> (ps : la LIGNE 60 c'est celle là)
Et maintenant mon formCreation.php :
require_once '../objet/mail.php' ;
require_once '../objet/user.php' ;
require_once '../objet/solde.php' ;
$user = new User($log) ;
if($user->existe()){
header("Location: ../../index.php?page=inscription&erreur=loginExiste") ; ( LIGNE 65 )
exit;
}else{
//Cryptage du mot de passe
$salt = 'SHIFLETT';
$password_crypt = md5($salt . md5($mdp . $salt));
$user->setPassword($password_crypt);
$user->setMail($email);
$user->setAge($age);
$user->save();
//Solde
$solde = new Solde(null, $login, 0);
$solde->save();
//Mail
//$mail = new Mail($email);
//$mail->setMessageBienvenue($user);
//$mail->send();
//Vide de session
session_unset();
$_SESSION['menu'] = 'default';
}
Ma foi, je ne trouve pas l'erreur, car dans mon conf.php je n'ai pas header. Et là c'est donc le premier.
Si vous pouviez m'aider ou me donner une piste ça sera sympa.
En vous remerciant, Nixial.
Je viens de terminer mon application php, et je suis en train de la mettre sur internet.
Problème, lorsque que j'essai de me connecter, ça me mets l'erreur suivante :
Warning: Cannot modify header information - headers already sent by (output started at /www/appgestion/php/objet/conf.php:60) in /www/appgestion/php/page/formCreation.php on line 65
Je vous mets conf.php :
<?php
class Conf
{
//variables globales de l'application.
private $sqlHost = 'xxxx:xx'; //adresse du serveur SQL
private $sqlUser = 'xxxx'; //utilisateur SQL
private $sqlPass = 'xxxx'; //mot de passe SQL
private $sqlBase = 'xxxx'; //base de donnée SQL
// instance de la classe
private static $instance;
// constructeur privé ; empêche la création directe d'objet
private function __construct()
{
}
//singleton
public static function singleton()
{
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
public function getSqlHost() {
return $this->sqlHost;
}
public function getSqlUser() {
return $this->sqlUser;
}
public function getSqlPass() {
return $this->sqlPass;
}
public function getSqlBase() {
return $this->sqlBase;
}
// Exemple d'une méthode
public function bark()
{
echo 'Woof!';
}
// Prévient les utilisateurs sur le clônage de l'instance
public function __clone()
{
trigger_error('Le clônage n\'est pas autorisé.', E_USER_ERROR);
}
}
?> (ps : la LIGNE 60 c'est celle là)
Et maintenant mon formCreation.php :
require_once '../objet/mail.php' ;
require_once '../objet/user.php' ;
require_once '../objet/solde.php' ;
$user = new User($log) ;
if($user->existe()){
header("Location: ../../index.php?page=inscription&erreur=loginExiste") ; ( LIGNE 65 )
exit;
}else{
//Cryptage du mot de passe
$salt = 'SHIFLETT';
$password_crypt = md5($salt . md5($mdp . $salt));
$user->setPassword($password_crypt);
$user->setMail($email);
$user->setAge($age);
$user->save();
//Solde
$solde = new Solde(null, $login, 0);
$solde->save();
//$mail = new Mail($email);
//$mail->setMessageBienvenue($user);
//$mail->send();
//Vide de session
session_unset();
$_SESSION['menu'] = 'default';
}
Ma foi, je ne trouve pas l'erreur, car dans mon conf.php je n'ai pas header. Et là c'est donc le premier.
Si vous pouviez m'aider ou me donner une piste ça sera sympa.
En vous remerciant, Nixial.
A voir également:
- [PHP] Prolème de header
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- 400 bad request request header or cookie too large - Forum Windows
- Php alert ✓ - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
3 réponses
require_once '../objet/mail.php' ; require_once '../objet/user.php' ; require_once '../objet/solde.php' ;
C'est page contienne un header ?
Euh non ces pages ne contiennent pas de headers ...
Ce sont des classes d'objets.
Je ne comprends pas .
Est-ce que ce n'est pas les header() dans les else if qu'il n'aime pas ?
Sur mon ordinateur ça tourne bien :D.
Ce sont des classes d'objets.
Je ne comprends pas .
Est-ce que ce n'est pas les header() dans les else if qu'il n'aime pas ?
Sur mon ordinateur ça tourne bien :D.
Voilà la classe user :
<?php
/**
* Classe user
*
*/
class User
{
// Déclarations des attributs
private $login;
private $password;
private $mail;
private $id;
private $age;
//constructeur
public function __construct ($login , $password = null, $mail = null, $age = null) {
$this->login = $login;
$this->password = $password;
$this->mail = $mail;
$this->age = $age;
}
//getters et setters
public function setPassword($password) {
$this->password = $password;
}
public function getPassword() {
return $this->password;
}
public function setLogin($login) {
$this->login = $login;
}
public function getLogin() {
return $this->login;
}
public function setMail($mail) {
$this->mail = $mail;
}
public function getMail() {
return $this->mail;
}
public function getId() {
return $this->id;
}
public function setAge($age) {
$this->age = $age;
}
public function getAge() {
return $this->age;
}
//modifie l'user en base
public function updateUser($login, $password) {
}
public function connecte(){
if(!isset($_SESSION['login'])){
return false;
}else{
return true;
}
}
public function authentificate(){
require_once 'db.php';
//Recupere objet Db
$myDb = Db::singleton();
$myDb->openConnection();
$query = "SELECT id FROM users WHERE login = '$this->login' AND mdp = '$this->password'";
$result = mysql_query ($query) or die ("La requête a échoué");
$row = mysql_fetch_array($result);
if($row == 0 or $row == FALSE){
return false;
}else{
$this->id = $row ;
return true;
}
$myDb->closeConnection();
}
public function controleLoginMail(){
require_once 'db.php';
//Recupere objet Db
$myDb = Db::singleton();
$myDb->openConnection();
$query = "SELECT login FROM users WHERE login = '$this->login' AND email = '$this->mail'";
$result = mysql_query ($query) or die ("La requête a échoué");
$row = mysql_fetch_array($result);
if($row == 0 or $row == FALSE){
return false;
}else{
return true;
}
$myDb->closeConnection();
}
//cherche l'id affecté de l'user en base
public function getIdByLogin() {
require_once 'db.php';
//Recupere objet Db
$myDb = Db::singleton();
$myDb->openConnection();
$query = "SELECT id FROM users WHERE login = '$this->login'";
$result = mysql_query ($query) or die ("La requête a échoué");
$this->id = $result ;
$myDb->closeConnection();
}
//cherche si cette utilisateur existe déjà
public function existe() {
require_once 'db.php';
//Recupere objet Db
$myDb = Db::singleton();
$myDb->openConnection();
$query = "SELECT id, login FROM users WHERE login = '$this->login'" ;
$result = mysql_query ($query) or die ("La requête a échoué");
$row = mysql_fetch_array($result);
if($row == 0 or $row == FALSE){
return false;
}else{
return true;
}
$myDb->closeConnection();
}
//sauvegarde l'user en base
public function save() {
require_once 'db.php';
//Recupere objet Db
$myDb = Db::singleton();
$myDb->openConnection();
$query = "INSERT INTO users (login,mdp,email,age)
values('$this->login','$this->password','$this->mail','$this->age')";
$result = mysql_query ($query) or die ("La requête a échoué");
$this->id = mysql_insert_id();
$myDb->closeConnection();
}
//supprime l'user en base
public function deleteUser() {
require_once 'db.php';
//Recupere objet Db
$myDb = Db::singleton();
$myDb->openConnection();
$query = "DELETE FROM users WHERE id = '$this->id'" ;
$result = mysql_query ($query) or die ("La requête a échoué");
$myDb->closeConnection();
}
}
?>
Il ne me semble pas avoir mis de echo, ou print ...
<?php
/**
* Classe user
*
*/
class User
{
// Déclarations des attributs
private $login;
private $password;
private $mail;
private $id;
private $age;
//constructeur
public function __construct ($login , $password = null, $mail = null, $age = null) {
$this->login = $login;
$this->password = $password;
$this->mail = $mail;
$this->age = $age;
}
//getters et setters
public function setPassword($password) {
$this->password = $password;
}
public function getPassword() {
return $this->password;
}
public function setLogin($login) {
$this->login = $login;
}
public function getLogin() {
return $this->login;
}
public function setMail($mail) {
$this->mail = $mail;
}
public function getMail() {
return $this->mail;
}
public function getId() {
return $this->id;
}
public function setAge($age) {
$this->age = $age;
}
public function getAge() {
return $this->age;
}
//modifie l'user en base
public function updateUser($login, $password) {
}
public function connecte(){
if(!isset($_SESSION['login'])){
return false;
}else{
return true;
}
}
public function authentificate(){
require_once 'db.php';
//Recupere objet Db
$myDb = Db::singleton();
$myDb->openConnection();
$query = "SELECT id FROM users WHERE login = '$this->login' AND mdp = '$this->password'";
$result = mysql_query ($query) or die ("La requête a échoué");
$row = mysql_fetch_array($result);
if($row == 0 or $row == FALSE){
return false;
}else{
$this->id = $row ;
return true;
}
$myDb->closeConnection();
}
public function controleLoginMail(){
require_once 'db.php';
//Recupere objet Db
$myDb = Db::singleton();
$myDb->openConnection();
$query = "SELECT login FROM users WHERE login = '$this->login' AND email = '$this->mail'";
$result = mysql_query ($query) or die ("La requête a échoué");
$row = mysql_fetch_array($result);
if($row == 0 or $row == FALSE){
return false;
}else{
return true;
}
$myDb->closeConnection();
}
//cherche l'id affecté de l'user en base
public function getIdByLogin() {
require_once 'db.php';
//Recupere objet Db
$myDb = Db::singleton();
$myDb->openConnection();
$query = "SELECT id FROM users WHERE login = '$this->login'";
$result = mysql_query ($query) or die ("La requête a échoué");
$this->id = $result ;
$myDb->closeConnection();
}
//cherche si cette utilisateur existe déjà
public function existe() {
require_once 'db.php';
//Recupere objet Db
$myDb = Db::singleton();
$myDb->openConnection();
$query = "SELECT id, login FROM users WHERE login = '$this->login'" ;
$result = mysql_query ($query) or die ("La requête a échoué");
$row = mysql_fetch_array($result);
if($row == 0 or $row == FALSE){
return false;
}else{
return true;
}
$myDb->closeConnection();
}
//sauvegarde l'user en base
public function save() {
require_once 'db.php';
//Recupere objet Db
$myDb = Db::singleton();
$myDb->openConnection();
$query = "INSERT INTO users (login,mdp,email,age)
values('$this->login','$this->password','$this->mail','$this->age')";
$result = mysql_query ($query) or die ("La requête a échoué");
$this->id = mysql_insert_id();
$myDb->closeConnection();
}
//supprime l'user en base
public function deleteUser() {
require_once 'db.php';
//Recupere objet Db
$myDb = Db::singleton();
$myDb->openConnection();
$query = "DELETE FROM users WHERE id = '$this->id'" ;
$result = mysql_query ($query) or die ("La requête a échoué");
$myDb->closeConnection();
}
}
?>
Il ne me semble pas avoir mis de echo, ou print ...
public function existe() {
require_once 'db.php';
//Recupere objet Db
$myDb = Db::singleton();
$myDb->openConnection();
$query = "SELECT id, login FROM users WHERE login = '$this->login'" ;
$result = mysql_query ($query) or die ("La requête a échoué");
$row = mysql_fetch_array($result);
if($row == 0 or $row == FALSE){
return false;
}else{
return true;
}
$myDb->closeConnection();
}
Toutes les parties en gras sont susceptibles d'afficher des infos à l'écran, vérifie ces fonctions. Si la requête échoue, il y a automatiquement un affichage, je pencherais pour cette cause, tu devrais vérifier que la connexion à la base se fasse bien...
Re bonsoir,
Bon j'ai un peu triché mais ça fonctionne.
J'ai supprimé ma classe Conf.php, car le problème venait de là visiblement, les variables je les ai mises dans Db.php et je n'ai plus le soucis.
Merci de votre aide à tous .
PS: voici le lien pour ceux qui veulent aller voir ^^
http://appgestion.olympe-network.com/
Bon j'ai un peu triché mais ça fonctionne.
J'ai supprimé ma classe Conf.php, car le problème venait de là visiblement, les variables je les ai mises dans Db.php et je n'ai plus le soucis.
Merci de votre aide à tous .
PS: voici le lien pour ceux qui veulent aller voir ^^
http://appgestion.olympe-network.com/