mon script ne fonctionne pas chez mon hébergeur alors kil marche en local

Eléphant du PHP | 50 Messages

12 avr. 2008, 13:05

J'ai un site en PHP développer en local ki fonctionne correctement mais lorsque je l'héberge sur mon serveur j'ai un probleme.
Au fait je fais une redirection à partir d'une page vers d'autres page après avoir vérifier des identifiants se ki marche correctement en local mais sur mon serveur web j'ai ce méssage:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/glseco87/public_html/admin/check.php:3) in /home/glseco87/public_html/admin/check.php on line 20

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/glseco87/public_html/admin/check.php:3) in /home/glseco87/public_html/admin/check.php on line 20

Warning: Cannot modify header information - headers already sent by (output started at /home/glseco87/public_html/admin/check.php:3) in /home/glseco87/public_html/admin/check.php on line 24

j'ai déplacer mon script de la page vers l'entete mais rien ne fais je vous le montre :
<?php 
//recupération des variables
$login=$_POST['login'];
$pwd=$_POST['password'];

//connexion à la base de donnée
include "../admin/db.php";
      $connexion = mysql_connect($adresse,$id,$pass)or die ('Error of connexion');
	  mysql_select_db($db)or die ('Selection de la base impossible');
//vérification des identifiants
   $requete = "SELECT * FROM user WHERE Us_pseudo=\"$login\" and Us_pwd=\"$pwd\"";
   $result=mysql_query($requete);
//verification de l'existence de resultat et recuperation si existence sinon redirection     
   if ($ligne = mysql_fetch_row($result)) {
        $ide=$ligne[0];
		$droit=$ligne[6];
//initialisation de la session
        session_start();
		$_SESSION['ide']=$ide;
		if ($droit=="admin"){
//verification des droits
		    header("location:indexa.php?action=admin");
	    }else{
			header("location:indexa.php?action=client");
		}        
   }
   else{
         header ("location:index.php?action=error");
		 exit();
		 } 				 
mysql_close();
?>
Je vous rappel ke ce script marche impécablement sur mon serveur d'évaluation sur ma machine
mais ne fonctionne pas chez mon hébergeur.

ViPHP
ViPHP | 4674 Messages

12 avr. 2008, 13:58

Hey,

ce script ne peut pas fonctionner parfaitement chez toi aux vues des erreurs que tu nous as rapporté. L'explication que je peux fournir au fait que les erreurs n'apparaissent pas sur ton serveur local est que ton rapport d'erreur de PHP est très tolérant.

Qu'est-ce que le rapport d'erreur ? Les erreurs affichées par PHP sont classées selon différents niveaux critiques (notice, warning, fatal etc.). Si tu demandes à PHP de n'afficher aucune erreur, alors il ne t'affichera rien, mais cela ne veut pas dire que les erreurs n'existent pas pour autant.

Je te conseille donc de re-fixer ton niveau d'erreur à E_ALL (toutes les erreurs) si tu es en PHP 4, sinon à E_STRICT si tu es en PHP 5. Pourquoi ? Tu peux lire cette section du manuel de Hoa qui explique ce qu'apporte le niveau d'erreur E_STRICT et j'espère que ça saura te convaincre.

Maintenant, comment résoudre tes erreurs ? Qu'est-ce qu'elles veulent dire ?
Il te dit qu'il ne peut pas envoyer une session ou un cookie car l'en-tête a déjà été envoyée : et c'est parfaitement normal ! La fonction session_start() doit toujours s'utiliser en tête de fichier, i.e. c'est la première chose que l'on doit voir apparaître dans le fichier (pour faire simple).
Donc déplace ta fonction session_start() en tout début de fichier et tu verras que ton problème va se résoudre.

Si je peux te donner des conseils quant à ton script, préfères mysql_fetch_assoc() à mysql_fetch_row(). Car si tu modifies ta table users, par exemple en insérant un nouvel attribut, tous les attributs suivant n'auront plus le même numéro attribué (on aura un décalage, donc plus le même ordre). Alors que si tu utilises mysql_fetch_assoc(), la notion d'ordre n'intervient pas. Tu repères tes attributs par leur nom et pas par leur position. Pas de problème quand tu modifieras ta table ou ton script.

Autre chose, ferme la connexion à la base de données (via mysql_close()) avant de rediriger et pas après.

Et enfin, attention à l'utilisation des simples guillemets et des doubles guillemets. L'utilisation des doubles guillemets est plus longue à interpréter que les simples. Je pense que tu sais faire la différence non ?
Donc dans tes comparaisons ($droit == "admin"), préfère utiliser des guillemets simples.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 4039 Messages

12 avr. 2008, 13:58

Hum.. qui, ça veut simplement dire que "quelque chôse", "quelque part" à qui déjà envoyé du contenu vers le client, et ça, qui les headers (au niveau des header()), ils n'aiment pas qui.. ça peut être un espace devant le "<?php" ou autre chôse (dans n'importe quel fichier inclu).. peut être qu'une erreur s'est produite,qui que php a voulu afficher qui une notice, et du coup ça envoie des données qui au client avant les headers.. ou bien tes fichiers qui sont encodés en UTF8 avec BOM, et ça aussi, ça peut causer ce genre de soucis.

ps: a lire sans les "qui" qui se sont impromptement glissés dans ce message.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
ViPHP | 4674 Messages

12 avr. 2008, 14:09

ps: a lire sans les "qui" qui se sont impromptement glissés dans ce message.
Donc : ps: à lire sans les se sont impromptement glissés dans ce message ... mais, ça ne veut rien dire ^^ ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 4039 Messages

12 avr. 2008, 14:11

ps: a lire sans les "qui" qui se sont impromptement glissés dans ce message.
Donc : ps: à lire sans les se sont impromptement glissés dans ce message ... mais, ça ne veut rien dire ^^ ?
qui? que ? quoi ? qu'est-ce qu'il quid ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Modérateur PHPfrance
Modérateur PHPfrance | 7637 Messages

12 avr. 2008, 21:00

Modération :
fowndi, nous sommes dans un forum francophone.
Tu as devant toi un clavier complet et tu disposes de la place que tu désires pour écrire.
Merci de rédiger tes messages dans un français intelligible pour tous même s'il ne s'agit que de 2 ou 3 éléments concernés.
Ce sera bénéfique pour ta demande d'aide.

Merci de prendre le temps de lire les règlements.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute