Fatal_Error....
RésoluAlors voilà je souhaite faire un système d'espace membres qui créé en même temps une fiche sur le membre visible une fois connecté et enregistré.
Seulement voilà je tombe sur cette erreur :
Warning: Cannot modify header information - headers already sent by (output started at /homez.110/weblobsd/www/emploi/login.php:7) in /homez.110/weblobsd/www/emploi/login.php on line 70 Warning: Cannot modify header information - headers already sent by (output started at /homez.110/weblobsd/www/emploi/login.php:7) in /homez.110/weblobsd/www/emploi/login.php on line 71 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /homez.110/weblobsd/www/emploi/login.php:7) in /homez.110/weblobsd/www/emploi/login.php on line 72 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homez.110/weblobsd/www/emploi/login.php:7) in /homez.110/weblobsd/www/emploi/login.php on line 72 Warning: Cannot modify header information - headers already sent by (output started at /homez.110/weblobsd/www/emploi/login.php:7) in /homez.110/weblobsd/www/emploi/login.php on line 77
pourtant je n'ai pas l'impression que le header soit modifier pendant cette action d'inscription ou de Login une fois l'inscription faite.
voici donc mon script concernant cette page de login.php :
<?php
include('config.php');
if($username=='' || $password=='')
{
viewheader();
echo"<h3>$champsrequis</h3>";
view_login_form();
viewfooter();
exit;
}
db_connect();
$sql = "select password from $dbtable where username='$username'";
$req = mysql_query($sql) or die('Erreur SQL');
$rez = mysql_fetch_array($req);
if($rez['password'] != $password)
{
viewheader();
echo"<h3>$wrongident</h3>";
view_login_form();
viewfooter();
exit;
}
else
{
$ip = $REMOTE_ADDR;
$time = time();
$sql = "select * from $dbtable where username='$username'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_array($req);
$smartid = $data['id'];
mysql_query("UPDATE membres SET ip='$ip' WHERE username='$username'");
//mysql_query("UPDATE membres SET ip='$ip', lastdate='$time' WHERE username='$username'");
$expire = 365*24*3600;
setcookie("username","$username",time()+$expire,"/","");
setcookie("smartid","$smartid",time()+$expire,"/","");
session_start();
session_register('username');
session_register('smartid');
$_SESSION['username'] = $username;
$_SESSION['smartid'] = $smartid;
header("Location: membres.php");
}
?>
le même problème existe avec ma page 'identification.php'.
Si quelqu'un a la solution à ce problème ce serait cool de votre part parce que là je retourne ça dans tous les sens et je ne vois pas ce que je peux faire de plus.
Merci d'avance.
Configuration: Windows XP Firefox 3.5.7
27 réponses
Des avertissements signalent que des en-têtes HTTP ne peuvent pas être envoyés après le début de l'affichage dans le cadre d'un système d'espace membres lors de l'inscription ou de la connexion. Plusieurs contributeurs expliquent que l'envoi de HTML ou d'échos avant les appels header(), setcookie() ou session_start() déclenche ces avertissements, et qu'il faut éviter toute sortie avant les en-têtes. La solution préconisée est de déplacer les appels modifiant les en-têtes avant toute sortie HTML, et d'éviter les espaces avant les balises PHP. En pratique, certaines réponses mentionnent aussi des difficultés liées au Doctype ou à un BOM, et recommandent de placer les en-têtes en début de script et d’assurer la cohérence des variables de connexion.
-
Erreur trouvée au réveil... après 6 heures passé dessus hier soir... :(
Dans le fichier config, il y avait la requête $smartid et dans celui de la fiche_membre : $id.
Juste en testant de modifier ça j'ai donc transformé mon $id en $smartid... et surprise ça fonctionne. Je n'ai pas très bien saisi pourquoi y avait deux variables différentes pour appeler la même chose. Je ne comprenais pas vraiment mais maintenant tout est ok.
Y avait aussi un bug au niveau du mot de passe oublié. Problème résolu aussi. dans le fichier config toujours :rolleyes:
il y avait la fonction db_connect seulement elle réapparaissait une deuxième fois sur le script lostpw.php
donc j'ai supprimé le 'include('config.php'); et j'ai copié/coller les $ pour la connexion à la BDD. et ça fonctionne nickel.
ensuite il envoyait pas le mot de passe sur la boite mail... le texte oui mais pas le mot de passe.
erreur de script encore : $pass au lieu de $password.
Bref tout ça pour dire qu'il y a des gens qui s'amuse à mettre des script avec bug volontairement juste pour nous apprendre à comprendre le PHP et je tiens à les remercier car j'ai beaucoup appris avec ce script.
Je te remercie aussi pour ton aide le père ;) très précieuse et m'a bien orienté.
pourtant beaucoup de personnes ne savent pas et ne sauront jamais programmer ni ne prendront le temps de l'apprendre. Alors si parfois on pouvait tomber sur des scripts complets et opérationnels pour des besoins pratiques et utiles pour des personnes qui ne sauront jamais programmer, se serait sympa de temps en temps.... j'en suis à mon 19ème script d'espace membre et pas un n'a fonctionné convenablement.
Voilà problème résolu.
encore merci ;) -
Le but du forum est d'aider les gens sur des points particuliers, pas de prendre à charge la création d'un site :)
Si tu rencontres de nouvelles difficultés après ces dernières corrections, indique quels est le message d'erreur ou le comportement anormal, mais sur un seul point à la fois. Pas question -pour moi en tout cas- de me plonger dans un ensemble de onze scripts PHP pour essayer d'en comprendre les tenants et les aboutissants. -
alors voici le lien du script que j'ai téléchargé mais beaucoup modifié :
https://scripts.toucharger.com/fiches/scripts/espace-membres/3318.htm
si quelqu'un a des solutions pour le rendre opérationnel car en plus de ces quelques bugs d'importances, il en existe d'autres, comme la fonction mot de pass oublié et j'en passe et des meilleurs.
Merci d'avance pour vos efforts de réponse et peut-être aussi pour solutionner ce script.. -
Bon en y réfléchissant bien ce n'est pas $id mais $myid
$myid correspondant à [id] qu'on va chercher dans la BDD
$i = 0; while ($i < $total) { $username = mysql_result($requete,$i,"username"); $myid = mysql_result($requete,$i,"id");
on connait donc la valeur de $i et de $myid -
S'il n'y a rien dans $id, tes requêtes ne risquent pas de marcher. À moins que tu aies de id vides dans ta table, mais ce ne serait pas normal non plus...
Pour que ça marche, il faut bien que tu aies un identifiant sur lequel travailler. À toi de savoir d'où il doit venir, je ne peux pas le deviner pour toi -
tu veux dire :
echo "$id"; ?
parce que si c'est ça ça fait rien du tout...
voilà le fiche_membre.php complet :
<? include("header.php"); include("config.php"); db_connect(); $req = mysql_query("SELECT clicks FROM $dbtable WHERE id='$id'"); $res = mysql_num_rows($req); $i=0; $row = mysql_fetch_array($req); $row[clicks]++; mysql_query("UPDATE $dbtable SET clicks='$row[clicks]' WHERE id='$id' ") or die ("ERREUR"); $req = "SELECT * FROM $dbtable WHERE id='$id'"; $res = mysql_query($req); $username = mysql_result($res,$i,"username"); $email = mysql_result($res,$i,"email"); $url = mysql_result($res,$i,"url"); $photo = mysql_result($res,$i,"photo"); $bouton = mysql_result($res,$i,"bouton"); $clicks = mysql_result($res,$i,"clicks"); $ip = mysql_result($res,$i,"ip"); $date = mysql_result($res,$i,"date_reg"); $annee = date("Y", $date); $mois = date("m", $date); $jour = date("d", $date); $heures = date("H", $date); $minutes = date("i", $date); $date = $jour."/".$mois."/".$annee." à ".$heures."h".$minutes; $taillephoto = "$imgs_folder/$photo"; $size = getimagesize ($taillephoto); $photosize_width = $size[0]; $photosize_height = $size[1]; $taillebouton = "$imgs_folder/$bouton"; $size = getimagesize ($taillebouton); $boutonsize_width = $size[0]; $boutonsize_height = $size[1]; echo"<span class=\"Style1\">Fiche membre de </span><b>$username</b><br />"; echo"<span class=\"Style1\">Consultée $clicks fois</span>"; echo"<br />"; echo"<img src='$imgs_folder/$photo' width='100' height='100' border='0' alt='' /><br />"; //echo"$photosize_width x $photosize_height<br />"; echo"<img src='$imgs_folder/$bouton' width='88' height='31' border='0' alt='' /><br />"; //echo"$boutonsize_width x $boutonsize_height<br />"; echo"<br /><hr /><br />"; echo"<span class=\"Style1\">Pseudo : $username</span><br />"; echo"<span class=\"Style1\">membre depuis le</span>"; echo"<br />"; echo"<span class=\"Style1\">$date</span>"; echo"<br />"; echo"<span class=\"Style1\"><a href='mailto:$email'> $email</a></span><br />"; if(!empty($url)) { echo"<span class=\"Style1\"><a href='$url'target='_blank'>$url</a></span><br />"; } echo"<span class=\"Style1\"><a href='javascript:self.close();'>Fermer la fiche</a></span>"; ?> <? include("footer.php"); ?> -
ok, je viens de voir où... Et j'avais mal lu les messages d'erreur
Du coup, c'est tout bêtement que ta requête ne retourne rien. Probablement parce que $id n'est pas correct. Où est initialisée cette variable ? Peux-tu en faire un echo pour vérifier sa valeur ? -
Que tu m'as donné où ? quel numéro de message ?
-
la variable $1=0 à la ligne 10 du code que je t'ai donné
par contre en effet j'ai bien un while mais dans la fiche memberlist.php qui fonctionne.
voici le code :
while ($profil = mysql_fetch_array($resultat)) { $myid = ($profil["id"]); $username = ($profil["username"]); $date = ($profil["date_reg"]); $email = ($profil["email"]); $url = ($profil["url"]); $clicks = ($profil["clicks"]); $photo = ($profil["photo"]); $annee = date("Y", $date); $mois = date("m", $date); $jour = date("d", $date); $heures = date("H", $date); $minutes = date("i", $date); $date = $jour."/".$mois."/".$annee." à ".$heures."h".$minutes; -
mysql_result est à éviter si on a un très grand tableau, mais pas de problèmes sur des petits jeux de résultats.
Et toi, visiblement, tu as moins de 6 lignes de réponse, mais tu essayes d'accéder à la 6ème (indice 5).
Dans le code que tu montres message 10 (je suppose que c'est celui-là qui génère l'erreur) il y a une variable $i qui correspond sûrement à un compteur dans une boucle , mais on ne voit ni for, ni while... D'où vient-elle ? -
Contributeurutilise mysql_fetch plutot que mysql_result
regarde que tu n' ai pas oublié un champ ou une variable non declarée -
ouais je viens de corriger ça en effet ^^' bah tu sais des heures devant l'ordi et à force on voit plus rien :S
cependant c'est fait et de plus j'ai rajouté l'image par défaut dans la BDD donc jusque là tout fonctionne sauf qu'une personne connecté peut modifier son profil mais quand il le consulte :
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in /homez.110/weblobsd/www/emploi/fiche_membre.php on line 18 Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in /homez.110/weblobsd/www/emploi/fiche_membre.php on line 19 Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in /homez.110/weblobsd/www/emploi/fiche_membre.php on line 20 Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in /homez.110/weblobsd/www/emploi/fiche_membre.php on line 21 Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in /homez.110/weblobsd/www/emploi/fiche_membre.php on line 22 Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in /homez.110/weblobsd/www/emploi/fiche_membre.php on line 23 Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in /homez.110/weblobsd/www/emploi/fiche_membre.php on line 24 Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in /homez.110/weblobsd/www/emploi/fiche_membre.php on line 25 Warning: getimagesize() [function.getimagesize]: Read error! in /homez.110/weblobsd/www/emploi/fiche_membre.php on line 34 Warning: getimagesize() [function.getimagesize]: Read error! in /homez.110/weblobsd/www/emploi/fiche_membre.php on line 38
voici la page entière qui est concernée : fiche_membre.php
1. <? 2. include("header.php"); 3. include("config.php"); 4. 5. db_connect(); 6. 7. $req = mysql_query("SELECT clicks FROM $dbtable WHERE id='$id'"); 8. $res = mysql_num_rows($req); 9. 10. $i=0; 11. $row = mysql_fetch_array($req); 12. $row[clicks]++; 13. mysql_query("UPDATE $dbtable SET clicks='$row[clicks]' WHERE id='$id' ") or die ("ERREUR"); 14. 15. $req = "SELECT * FROM $dbtable WHERE id='$id'"; 16. $res = mysql_query($req); 17. 18. $username = mysql_result($res,$i,"username"); 19. $email = mysql_result($res,$i,"email"); 20. $url = mysql_result($res,$i,"url"); 21. $photo = mysql_result($res,$i,"photo"); 22. $bouton = mysql_result($res,$i,"bouton"); 23. $clicks = mysql_result($res,$i,"clicks"); 24. $ip = mysql_result($res,$i,"ip"); 25. $date = mysql_result($res,$i,"date_reg"); 26. $annee = date("Y", $date); 27. $mois = date("m", $date); 28. $jour = date("d", $date); 29. $heures = date("H", $date); 30. $minutes = date("i", $date); 31. $date = $jour."/".$mois."/".$annee." à ".$heures."h".$minutes; 32. 33. $taillephoto = "$imgs_folder/$photo"; 34. $size = getimagesize ($taillephoto); 35. $photosize_width = $size[0]; 36. $photosize_height = $size[1]; 37. $taillebouton = "$imgs_folder/$bouton"; 38. $size = getimagesize ($taillebouton); 39. $boutonsize_width = $size[0]; 40. $boutonsize_height = $size[1]; 41. 42. 43. echo"<span class=\"Style1\">Fiche membre de </span><b>$username</b><br />"; 44. echo"<span class=\"Style1\">Consultée $clicks fois</span>"; 45. echo"<br />"; 46. echo"<img src='$imgs_folder/$photo' width='100' height='100' border='0' alt='' /><br />"; 47. //echo"$photosize_width x $photosize_height<br />"; 48. echo"<img src='$imgs_folder/$bouton' width='88' height='31' border='0' alt='' /><br />"; 49. //echo"$boutonsize_width x $boutonsize_height<br />"; 50. echo"<br /><hr /><br />"; 51. echo"<span class=\"Style1\">Pseudo : $username</span><br />"; 52. echo"<span class=\"Style1\">membre depuis le</span>"; 53. echo"<br />"; 54. echo"<span class=\"Style1\">$date</span>"; 55. echo"<br />"; 56. echo"<span class=\"Style1\"><a href='mailto:$email'> $email</a></span><br />"; 57. 58. if(!empty($url)) { 59. echo"<span class=\"Style1\"><a href='$url'target='_blank'>$url</a></span><br />"; 60. } 61. 62. echo"<span class=\"Style1\"><a href='javascript:self.close();'>Fermer la fiche</a></span>"; 63. ?> 64. <? 65. include("footer.php"); 66. ?>
bon je pense qu'en fait vu qu'il fait une erreur sur chacune des données qu'il doit aller rechercher dans la BDD, c'est que la connexion doit pas se faire... car rien ne s'affiche des éléments.
l'adresse est différente de quand on passe par la liste des membres :
http://www.weblobsdesigner.fr/emploi/fiche_membre.php?id=
sans rien à la fin... donc il prend pas l'ID... comment corriger ça stp ?
Dans la page membre voici le lien vers la page fiche_membre.php :
echo"<a href=\"#\" onClick=\"window.open('fiche_membre.php?id=$myid','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=1, copyhistory=0, menuBar=0, width=800, height=600, left=0, top=0');return(false)\">Voir votre profil</a>
la variable est bien accepté elle depuis les même liens sur la page de liste des membres... curieux cette affaire...
je vérifie qu'il s'agisse bien du même lien... au cas ou... :/
[edit] bon c'est bien le même donc je pense que la connexion à la BDD ne se fait pas... -
Dès le message 7 je t'avais demandé de vérifier les majuscules/minuscules. Tu m'as aussitôt répondu que c'était OK
Or, je lis dans ton message d'erreur : uploads/photo_sans.jpg
et dans ton site à l'adresse http://www.weblobsdesigner.fr/emploi/uploads/ je lis photo_sans.JPG
J'en reviens à mon message 7 :
S'il te dit que l'image n'existe pas, c'est qu'elle n'existe pas. Quand un programmeur et un interpréteur PHP ne sont pas d'accord là-dessus, j'ai toujours vu que c'était le PHP qui avait raison -
J'ose pas trop le donner car en fait à l'origine je suis illustrateur et webdesigner et non webmaster donc je viens d'ouvrir ce site lié à mon activité pour proposer des sites internet complets... ça fait pas très pro j'en ai bien conscience mais je suis débutant en programmation. Je me débrouille pas trop mal en HTML et CSS mais pour le reste je m'auto-forme.
Bon voici le lien du site :
http://www.weblobsdesigner.fr/emploi/
j'ai remarqué aussi un léger problème au niveau du header quand on retourne sur l'index une fois connecté, il affiche deux fois le header l'un en-dessous de l'autre.
merci de ton aide le père. -
Je n'avais pas vu ton message 10 quand j'ai écrit mon message 11
Tu dis beaucoup trop de choses : commençons par nous en tenir au message d'erreur de la fonction getimagesize
Peux-tu, juste avent l'appel à cette fonction faire
echo _SERVER["HTTP_HOST"],' ',_SERVER["PHP_SELF"] ;
histoire de voir où se trouve ton script dans l'arborescence du site
Le mieux serait que tu donnes un lien vers ton site (s'il est en ligne bien sûr) -
Je viens de modifier ma réponse juste au-dessus regarde je te mets les bouts de scripts.
fiche_membre.php est bien un fichier seul sur la racine "d'emploi" -
j'ai essayé chez moi, 'uploads/photo_sans.jpg' ou './uploads/photo_sans.jpg', ça fait pareil...
fiche_membre.php est-il bien le script appelé, ou est-ce un fichier inclus par un autre ?
Peut-on avoir un lien vers le site où ça se passe ? -
Bonjour et merci de ta réponse mais en fait,
quand j'upload une image, elle s'affiche donc le problème doit pas venir du répertoire.
dans la fiche perso du membre l'image s'affiche bien mais si un autre membre veut consulter sa fiche, bah j'ai que des messages d'erreurs à la place.
de plus même en uploadant les fameuse images sur un compte fictif, ça ne le prend toujours pas en compte par défaut mais elles s'affichent bien quand même sur la fiche perso du membre.
voici la partie du code ou l'image ne s'affiche pas :
while ($profil = mysql_fetch_array($resultat)) { $myid = ($profil["id"]); $username = ($profil["username"]); $date = ($profil["date_reg"]); $email = ($profil["email"]); $url = ($profil["url"]); $clicks = ($profil["clicks"]); $photo = ($profil["photo"]); $annee = date("Y", $date); $mois = date("m", $date); $jour = date("d", $date); $heures = date("H", $date); $minutes = date("i", $date); $date = $jour."/".$mois."/".$annee." à ".$heures."h".$minutes; if (($bgColor == "")||($bgColor == "#000")) $bgColor = "#000"; else $bgColor = "#000"; echo "<tr bgcolor='$bgColor'>"; echo"<td valign='top' width='44'><a href='$imgs_folder/$photo' target='_blank'><img src='$imgs_folder/$photo' width='44' height='44' border='0'></a></td>"; echo"<td valign='top'><span class=\"Style2\"><b>$username</b><br>"; echo"membre depuis le <br>$date</span></td>"; echo"<td valign='top'><span class=\"Style2\"><a href='mailto:$email'>$email</a></span></td>"; echo"<td valign='top'><span class=\"Style2\"><a href='$url' target='_blank'>$url</a></span></td>";
la variable img_folder quant à elle se trouve dans le fichier config.
$imgs_folder = "uploads";
et enfin la partie du code ou on doit voir s'afficher dans la fiche perso l'image par défaut si aucune n'est uplodé par le membre :
$req = "SELECT * FROM $dbtable WHERE id='$id'"; $res = mysql_query($req); $username = mysql_result($res,$i,"username"); $email = mysql_result($res,$i,"email"); $url = mysql_result($res,$i,"url"); $photo = mysql_result($res,$i,"photo"); $bouton = mysql_result($res,$i,"bouton"); $clicks = mysql_result($res,$i,"clicks"); $ip = mysql_result($res,$i,"ip"); $date = mysql_result($res,$i,"date_reg"); $annee = date("Y", $date); $mois = date("m", $date); $jour = date("d", $date); $heures = date("H", $date); $minutes = date("i", $date); $date = $jour."/".$mois."/".$annee." à ".$heures."h".$minutes; $taillephoto = "$imgs_folder/$photo"; $size = getimagesize ($taillephoto); $photosize_width = $size[0]; $photosize_height = $size[1]; $taillebouton = "$imgs_folder/$bouton"; $size = getimagesize ($taillebouton); $boutonsize_width = $size[0]; $boutonsize_height = $size[1]; echo"<span class=\"Style1\">Fiche membre de </span><b>$username</b><br>"; echo"<span class=\"Style1\">Consultée </span><span class=\"Style1\"><b>$clicks</b></span> <span class=\"Style1\">fois</span>"; echo"<br>"; echo"<img src='$imgs_folder/$photo' width='150' height='150' border='0'><br>"; //echo"$photosize_width x $photosize_height<br>"; echo"<img src='$imgs_folder/$bouton' width='88' height='31' border='0'><br>"; //echo"$boutonsize_width x $boutonsize_height<br>"; echo"<br><hr><br>"; echo"<span class=\"Style1\">Pseudo : $username</span><br>"; echo"<span class=\"Style1\">membre depuis le</span>"; echo"<br>"; echo"<span class=\"Style1\">$date</span>"; echo"<br>"; echo"<span class=\"Style1\"><a href='mailto:$email'> $email</a></span><br>";
merci pour ceux qui vont encore m'aider.
J'ai commencé le PHP y a peu de temps... -
Contributeuressaie plutot d emettre ton lien dans ta fonction:
./uploads/photo_sans.jpg -
oui oui il est bien un sous-répertoire et l'orthographe est bonne...
- 1
- 2