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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : mon script ne fonctionne pas chez mon hébergeur alors kil marche en local

par Truc » 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.

par Berzemus » 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 ?

par Hywan » 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 ^^ ?

par Berzemus » 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.

par Hywan » 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.

mon script ne fonctionne pas chez mon hébergeur alors kil ma

par fowndi » 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.