[PHP] Prolème de header

Fermé
Nixial - 15 nov. 2008 à 21:41
 Nixial - 15 nov. 2008 à 23:02
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.
A voir également:

3 réponses

Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
15 nov. 2008 à 21:56
Si tu postais dans le forum webmastering, t'aurais plus de chance d'être aider
0
Chupachups23 Messages postés 73 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 9 décembre 2009 18
15 nov. 2008 à 22:11
require_once '../objet/mail.php' ;
require_once '../objet/user.php' ;
require_once '../objet/solde.php' ; 


C'est page contienne un header ?
0
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.
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
15 nov. 2008 à 22:27
Tu es sûr que la fonction de création du User et la fonction existe() ne font pas de echo ou autre ? Parce que le message d'erreur indique les headers ont déjà été envoyés, ce qui la plupart du temps dû à un écho (ou print...) avant l'appel à la fonction header()...
0
Nixial > pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
15 nov. 2008 à 22:44
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 ...
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135 > Nixial
15 nov. 2008 à 22:53
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...
0
Nixial > pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
15 nov. 2008 à 23:02
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/
0