Page "mon compte"

Résolu
Bonjour,
Je suis en train de faire une page "mon compte" sur mon site. Ce que j'ai fait : un formulaire, qui permet de génerer une page php avec les infos dedans.

Mon soucis :
Les données exportées sont variables. Je m'explique : je créé avec ce formalaire une page
"compte de $login ..." avec $login le log de la personne. Seulement, quand je regarde cette page logué sous un autre compte, ce n'est plus le nom de login de la personne qui a créé la page, mais le miens... Ennuyeux !

Comment faire pour que ce champs soit "en dur " ?

Merci !

Pour les fans de code :

<?php
session_start();
	function redir($url){
	echo "<script language=\"javascript\">";
	echo "window.location='$url';";
	echo "</script>";
}
if ($_SESSION['login']=='') {
	echo"vous devez être connecté pour acceder à cette page !";
	redir("connexion.html");
}
function dateformat($date)
{
    //separation de la date par / ou -
    list($jour, $mois , $an) = split("[-./]",$date);
    //inverse la date
   return($an."-".$mois."-".$jour);
} 
$log = $_SESSION['login'];
include ('config.inc.php');
		$nombio = $_SESSION['pagenom'];
		$prenombio = $_SESSION['pageprenom'];
		$nomlog = $_SESSION['pagelog'];
		$mail = $_POST['mail'];
		$ville = $_POST['ville'];
		$pays = $_POST['pays'];
		$age = $_POST['age'];
		$site = $_POST['site'];
		$sexe = $_POST['sexe'];
		$datenaissance = $_POST['naissance'];
		$naissance = dateformat($datenaissance);
		$public = $_POST['public'];
		$fichier = "$nombio-$prenombio-$log.php";
		$req1 = mysql_query("SELECT * FROM touscelebres.users WHERE login = '$log'");
		$nb = mysql_num_rows($req1);
function SiteExiste($url) {
	if (@fopen($url, 'r')) return true;
	else return false;
}
?>
<html>
<head>
	<title>Tous Célèbres - Changer le mot de passe</title>
	<link rel="stylesheet" href="touscelebres.css" type="text/css">
</head>

<body><div align="center">
	<table cellpadding="0" cellspacing="0" id="tabprinc">
	<?php 
		if ( $nb == 1) {
			$sql = "UPDATE touscelebres.users SET mail = '$mail' , Ville = '$ville' , Pays='$pays' , Age='$age' , site='$site' , Sexe='$sexe' , Naissance = '$naissance' , Public = '$public' WHERE login like '$log'";
			$req = mysql_query($sql) or die (mysql_error());
			$contenu = "<?php
		session_start();
		include ('config.inc.php');
		\$log = \$_SESSION['login'];
		if (\$_SESSION['login'] == '') {
		echo \"vous devez êtres connecté pour acceder à cette page !\";
		}
		function SiteExiste(\$url) {
			if (@fopen(\$url, 'r')) return true;
			else return false;
		}
		function dateformatfrance(\$date) {
			//separation de la date par / ou -
			list(\$an, \$mois , \$jour) = split(\"[-./]\",\$date);
			//inverse la date
			return(\$jour.\"-\".\$mois.\"-\".\$an);
		} 
		\$sql = \"SELECT * FROM touscelebres.users up WHERE up.login = '\".addslashes(\$log).\"'\";
		\$req = mysql_query(\$sql)or die('Erreur SQL : <br />'.\$sql);
		\$row = mysql_fetch_row(\$req);
		\$login = \$row[3];  ?>
		<html>
	<head>
	<title>Tous Célèbres - Profil de <?php echo \"\$login\"; ?></title>
	<link rel=\"stylesheet\" href=\"touscelebres.css\" type=\"text/css\">
</head>

<body><div align=\"center\">
	<table cellpadding=\"0\" cellspacing=\"0\" id=\"tabprinc\">
        <b><h1>Profil de <?php echo \"\$login\"; ?> :</h1><br>
        </b>
        <br>
        <?php 
		\$sql = \"SELECT * FROM touscelebres.users up WHERE up.login = '\".addslashes(\$login).\"'\";
		\$req = mysql_query(\$sql)or die('Erreur SQL : <br />'.\$sql);
		\$row = mysql_fetch_row(\$req);
		\$nom = \$row[0];
		\$prenom = \$row[1];
		\$mail = \$row[2];
		\$ville = \$ville;//\$row[6];
		\$pays = \$row[7];
		\$age = \$row[8];
		\$site = \$row[9];
		\$sexe = \$row[10];
		\$naissance = \$row[11];
		\$naissance = dateformatfrance(\$naissance);
		\$public = \$row[12]; ?>
		<p> Nom : <?php echo \"\$nom\"; ?> <br>
		Prenom : <?php echo \"\$prenom\"; ?><br>
		Login : <?php echo \"\$login\"; ?><br>
		Mail : <?php echo \"\$mail\"; ?><br>
		Ville : <?php echo \"\$ville\"; ?><br>
		Pays : <?php echo \"\$pays\"; ?><br>
		Age : <?php echo \"\$age\"; ?> ans<br>
		Sexe : <?php echo \"\$sexe\"; ?><br>
		Date de naissance : <?php echo \"\$naissance\"; ?><br>
		Site personnel : <a href=\"<?php echo \$site ; ?>\" target=\"blank\"><?php echo \"\$site\"; ?></a><br>
		</div>
        </body>
        </html>
";
			if (file_exists("$login-infos.php")) {
unlink("$login-infos.php"); // Ceci supprimera le fichier s'il existe
}
$fp = @fopen("$login-infos.php","a+");
chmod("$login-infos.php", 0777);
$resultat = @fwrite($fp,$contenu);
		 ?>
		<p><h1>Vos informations ont bien été mises à jours !</h1>

		<?php } else {
		?>
		<p><h1>Une erreur est survenue...</h1>
		<?php
		}
		redir("http://touscelebres.olympe-network.com/account.php");
		?>
			<br>
			<br>
			<br>
</td>
		</tr>
	</table>
</body>
</html>
<?php
mysql_close($link);
?>

23 réponses

  1. Tu as appris le PHP où pour avoir un tel niveau ?
    Lorsque tu fais le echo, tu ajoutes ?login=$log à la fin.
    Exemple :
    echo '<a href="infos.php?login='.$log.'">À propos de '.$pseudo.'</a>';
    --
    Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
    1. C'est à dire que je ne sais pas faire en sorte que ça s'ajoute automatiquement... C'est à dire que quand je clique sur le login d'une personne dans la page info qui contient tous les logins, je veux que ?login=$log s'ajoute à la fin de l'url.

      Comment faire ?
      Merci !
      1. Ah, voila le nœud du problème.
        Comment ajouter le ?login=$log ?

        Merci !
        1. Si je te comprends bien, tu crées un fichier "infos.php?login={login}" pour chaque membre ?
          Normalement, tu n'as qu'un fichier "infos.php" et quand tu fais un lien, tu ajoute ?login=$log à la fin et tu auras le login dans $_GET['login'] sur ta page infos.php
          1. Bonjour.

            Pardon, mais je crois que c'est ce que je fais !
            Le membre est représenté par son login, ses infos sont dans la base de données, et je cherche à faire une page ?login=$log, et les infos du memebre seront retrouvées par des requêtes mysql.

            Le truc, c'est que la page infos.php?login=$log se créé bien, mais elle n'est pas trouvée par le serveur (bien qu'étant présente dessus) -> erreur 404

            Ma méthode de création de la page est elle bonne ?

            Merci !
            1. Le problème provient bien du ?LOGIN=ADMIN (et évite les majuscules).
              fopen ouvre le fichier de la même façon que par FTP, c'est-à-dire que le script n'est pas exécuter par le serveur.
              Tu peux utiliser la fonction file_get_contents($fichier)

              De toutes façon, tu n'utilises pas la bonne méthode pour faire un espace membre.
              Tu dois enregistrer tes membes dans la base de données et de faire un lien vers le profil de ce membre avec ?id={id} à la fin (remplace {id} par l'ID de l'enregistrement qui représente le membre). Ensuite, sur la page compte.php, tu auras une variable $_GET['id'] qui te permettra de faire récupérer les informations.
              En gros :
              1. Tu fais une requête :
              $sql = 'SELECT * FROM membres WHERE id = '.mysql_real_escape_string($_GET['id']);
              $req = mysql_query($sql);
              2. Tu comptes le nombre d'entrée : $nb = @mysql_num_rows($req);
              3. Tu vérifie si le membre existe :
              if($nb > 0) {
                // Si le membre existe ...
              } else { 
                echo 'Membre inexistant';
              }
              4. Si le membre existe, tu crées un array qui contiendra toutes les informations :
              $membre = mysql_fetch_assoc($req);

              Ensuite, il te suffira de faire des echo.
              Exemple : echo 'Pseudo : '.$membre['pseudo'].'<br/>';
              1. A vrai dire je ne vois pas du tout là. Mais si je peux me permettre personnellement j'aurais plutot fais une redirection sur une page qui afficherai les infos que tu souhaite plutôt que de créer un fichier exprès quand il veut voir le profil.
                1. Alors le soucis, c'est pas à la création (la page se créé), mais elle n'est pas trouvée par le serveur... Le fopen marche ! D'où mon incompréhension !

                  Merci !
                  1. deja essaie avec fopen($acc,"a+") (idem dans chmod)

                    voir ce que ca donne

                    sinon essaie avec readfile()

                    sinon pour fopen j'ai lu ca:
                    ça marchera pour récupérer la version "HTMLisée" de la page, mais il n'y a pas moyen de récupérer le source d'une page PHP (sauf plantage du serveur apache ou se trouve la page)


                    et tu as activé le parametre allow_url_fopen dans le php.ini ?
                    1. Voila mon code ...

                      <?php
                      // On démarre la session
                      session_start();
                      	function redir($url){
                      	echo "<script language=\"javascript\">";
                      	echo "window.location='$url';";
                      	echo "</script>";
                      }
                      if ($_SESSION['login']=='') {
                      	echo"vous devez être connecté pour acceder à cette page !";
                      	redir("connexion.html");
                      }
                      function dateformat($date)
                      {
                          //separation de la date par / ou -
                          list($jour, $mois , $an) = split("[-./]",$date);
                          //inverse la date
                         return($an."-".$mois."-".$jour);
                      } 
                      $log = $_SESSION['login'];
                      include ('config.inc.php');
                      		$nombio = $_SESSION['pagenom'];
                      		$prenombio = $_SESSION['pageprenom'];
                      		$nomlog = $_SESSION['pagelog'];
                      		$mail = $_POST['mail'];
                      		$ville = $_POST['ville'];
                      		$pays = $_POST['pays'];
                      		$age = $_POST['age'];
                      		$site = $_POST['site'];
                      		$sexe = $_POST['sexe'];
                      		$datenaissance = $_POST['naissance'];
                      		$naissance = dateformat($datenaissance);
                      		$public = $_POST['public'];
                      		$fichier = "$nombio-$prenombio-$log.php";
                      		$req1 = mysql_query("SELECT * FROM touscelebres.users WHERE login = '$log'");
                      		$nb = mysql_num_rows($req1);
                      		$acc = "infos.php?login=$log";
                      ?>
                      <html>
                      <head>
                      	<title>Tous Célèbres - Changer le mot de passe</title>
                      	<link rel="stylesheet" href="touscelebres.css" type="text/css">
                      </head>
                      
                      <body><div align="center">
                      	<table cellpadding="0" cellspacing="0" id="tabprinc">
                      		<?php 
                      		if ( $nb == 1) {
                      			$sql = "UPDATE touscelebres.users SET mail = '$mail' , Ville = '$ville' , Pays='$pays' , Age='$age' , site='$site' , Sexe='$sexe' , Naissance = '$naissance' , Public = '$public', url_account='$acc' WHERE login like '$log'";
                      			$req = mysql_query($sql) or die (mysql_error());
                      			$contenu = "<?php
                      		session_start();
                      		include ('config.inc.php');
                      		\$log = \$_SESSION['login'];
                      		if (\$_SESSION['login'] == '') {
                      		echo \"vous devez êtres connecté pour acceder à cette page !\";
                      		}
                      		function SiteExiste(\$url) {
                      			if (@fopen(\$url, 'r')) return true;
                      			else return false;
                      		}
                      		function dateformatfrance(\$date) {
                      			//separation de la date par / ou -
                      			list(\$an, \$mois , \$jour) = split(\"[-./]\",\$date);
                      			//inverse la date
                      			return(\$jour.\"-\".\$mois.\"-\".\$an);
                      		} 
                      		\$login = \$_GET['login'];
                      		\$sql = \"SELECT * FROM touscelebres.users up WHERE up.login = '\".addslashes(\$log).\"'\";
                      		\$req = mysql_query(\$sql)or die('Erreur SQL : <br />'.\$sql);
                      		\$row = mysql_fetch_row(\$req);
                      		?>
                      		<html>
                      	<head>
                      	<title>Tous Célèbres - Profil de <?php echo \"\$login\"; ?></title>
                      	<link rel=\"stylesheet\" href=\"touscelebres.css\" type=\"text/css\">
                      </head>
                      
                      <body><div align=\"center\">
                      	<table cellpadding=\"0\" cellspacing=\"0\" id=\"tabprinc\">
                      
                              <b><h1>Profil de <?php echo \"\$login\"; ?> :</h1><br>
                              </b>
                              <br>
                              <?php 
                      		\$nom =\$row[0];
                      		\$prenom = \$row[1];
                      		\$mail = \$row[2];
                      		\$ville =\$row[6];
                      		\$pays = \$row[7];
                      		\$age = \$row[8];
                      		\$site = \$row[9];
                      		\$sexe = \$row[10];
                      		\$naissance = \$row[11];
                      		\$naissance = dateformatfrance(\$naissance);
                      		\$public = \$row[12]; 
                      		?>
                      		<p> Nom : <?php echo \"\$nom\"; ?> <br>
                      		Prenom : <?php echo \"\$prenom\"; ?><br>
                      		Login : <?php echo \"\$login\"; ?><br>
                      		Mail : <?php echo \"\$mail\"; ?><br>
                      		Ville : <?php echo \"\$ville\"; ?><br>
                      		Pays : <?php echo \"\$pays\"; ?><br>
                      		Age : <?php echo \"\$age\"; ?> ans<br>
                      		Sexe : <?php echo \"\$sexe\"; ?><br>
                      		Date de naissance : <?php echo \"\$naissance\"; ?><br>
                      		Site personnel : <a href=\"<?php echo \$site ; ?>\" target=\"blank\"><?php echo \"\$site\"; ?></a><br>
                      		</div>
                              </body>
                              </html>
                      ";
                      		$sql = "SELECT * FROM touscelebres.users up WHERE up.login = '".addslashes($log)."'";
                      		$req = mysql_query($sql)or die('Erreur SQL : <br />'.$sql);
                      		$row = mysql_fetch_row($req);
                      		$login = $row[3];
                      $fp = @fopen("$acc","a+");
                      chmod("$acc", 0777);
                      $resultat = @fwrite($fp,$contenu);
                      		 ?>
                      		<p><h1>Vos informations ont bien été mises à jours !</h1>
                      
                      		<?php } else {
                      		?>
                      		<p><h1>Une erreur est survenue...</h1>
                      		<?php
                      		}
                      		//redir("http://touscelebres.olympe-network.com/account.php");
                      		?>
                      			<br>
                      			<br>
                      			<br>
                      </td>
                      		</tr>
                      	</table>
                      </body>
                      </html>
                      <?php
                      mysql_close($link);
                      ?>


                      Je ne vois pas non plus ce qui ne va pas. C'est bien normal si la page n'est pas en .php, non ? et comme elle est sur le serveur... Je ne vois pas pourquoi elle est introuvable !

                      Merci !

                      Edit : le fichier est de type PHP?LOGIN=ADMIN... ça ne m'a pas l'air normal ! mais c'est bien cette page que je dois crééer, non ?
                      1. Alors, presque tout est bon sauf 1 truc : erreur404 sur la page infos.php?login=$login.

                        Or cette page a été créée, elle est sur le serveur, mais bon, c'est pas un .php au bout, d'où l'erreur ?
                        Sinon je vois pas !

                        Merci !
                        1. c'est normal tu lui dis si le fichier existe on le supprime et ensuite tu fais ton opération sur ce fichier alors que s'il existait il a été supprimé et sinon ben il n'y en a pas...

                          comment la personne B accede aux infos de A? en cliquant sur son pseudo ou en entrant son nom dans un champ texte?

                          si c'est en cliquant sur son pseudo n'envoie que ce pseudo par $_GET ca suffit pour ta requette.
                          si c'est avec un champ texte meme chose mais avec $_POST

                          après je suis pas un pro mais je ferais comme ca
                          1. Alors j'ai essayé d'utiliser la méthode $_GET, et voila ce que j'ai essayé de faire :

                            créer une pages info.php?nom=$nom&ville=$ville&...
                            avec les champs $ville et ainsi de suite donnés pas le formulaire de post.

                            Ensuite, dans la page, les données sont retrouvées avec $nom = $_GET['nom']; et ainsi de suite.
                            Seulement ça ne marche pas, j'essaie de créer la page infos.php?nom=..., mais ça ne marche pas avec la méthode d'avant, à savoir :
                            $page = "infos.php?nom=...";
                            if (file_exists("$page")) {
                            unlink("$page"); // Ceci supprimera le fichier s'il existe
                            }
                            $fp = @fopen("$page","a+");
                            chmod("$page", 0777);
                            $resultat = @fwrite($fp,$contenu);


                            La j'ai une erreur qui me dit que la fonction chmod n'a rien à se mettre sous la dent, donc que la page n'a pas été créée. Pourquoi ?

                            Merci !
                            1. je dirais quand meme que l'erreur se situe vers ici:

                              <quote>\$sql = \"SELECT * FROM touscelebres.users up WHERE up.login = '\".addslashes(\$log).\"'\";
                              \$req = mysql_query(\$sql)or die('Erreur SQL : <br />'.\$sql);
                              \$row = mysql_fetch_row(\$req);
                              \$login = \$row[3]; ?></quote>

                              tu fais ta requete sur ton propre login
                              puis tu dis que le login de la personne que tu veux regarder est la 3eme valeur de ton tableau donc forcément c'est une information relative au compte de $log et non de $login

                              D'après moi tu devrais passer le login de la personne que tu veux regarder avec $_GET et utiliser cette variable dans ta requete <quote>\$sql = \"SELECT * FROM touscelebres.users up WHERE up.login = '\".addslashes(\$login).\"'\";</quote> directement.
                              1. je veux qu'on compte (B) puisse voir les infos que A a choisi de divulguer.
                                1. attends je ne comprends plus trop la lol
                                  tu veux avec un autre compte (B) pouvoir acceder aux infos de A?
                                  ou tu veux que B n'accede qu'a ses infos?
                                  • 1
                                  • 2