Page "mon compte"

[Résolu/Fermé]
Signaler
Messages postés
118
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
5 juillet 2010
-
Messages postés
118
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
5 juillet 2010
-
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

Messages postés
118
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
5 juillet 2010
2
Peut être aussi que je n'ai pas la bonne technique pour créer une telle page.
Merci de me dire si vous avez des idées !
Messages postés
77
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
4 novembre 2009
10
ce serait pas ton $login = \$row[3]; qui te pose le probleme? perso je ne programme uniquement en PDO donc les fonction sont différentes mais la je dirais que tu prends spécifiquement 1 enregistrement ( la ligne 3 de ton tableau de requete) du coup tu auras toujours ce meme login quel que soit l'utilisateur enregistré..

j'éspere que je dis pas de betises.
sinon je peux t'envoyer le code de ma page "mon compte" mais comme dis c'est en PDO
Messages postés
118
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
5 juillet 2010
2
Alors je ne connais pas PDO, mais pourquoi pas ?
Non, le soucis, c'est que je n'arrive pas à avoir un $login fixé une conne fois pour toute. Exemple :
mon lodin est A. Je poste mes données, mais la page n'est pas "page de $login", page "page de A", de manière à ce que, quand B se connecté, il voit "page de A" et non pas "page de B" (ce qui se passe actuellement).

Merci !
Messages postés
77
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
4 novembre 2009
10
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?
Messages postés
118
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
5 juillet 2010
2
je veux qu'on compte (B) puisse voir les infos que A a choisi de divulguer.
Messages postés
77
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
4 novembre 2009
10
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.
Messages postés
118
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
5 juillet 2010
2
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 !
Messages postés
77
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
4 novembre 2009
10
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
Messages postés
118
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
5 juillet 2010
2
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 !
Messages postés
118
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
5 juillet 2010
2
Je me permet de upper !

Par avance merci !
Messages postés
77
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
4 novembre 2009
10
J'ai pas trop d'idée la...
c'est quoi ton code?
Messages postés
118
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
5 juillet 2010
2
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 ?
Messages postés
77
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
4 novembre 2009
10
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 ?
Messages postés
118
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
5 juillet 2010
2
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 !
Messages postés
77
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
4 novembre 2009
10
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.
Messages postés
18569
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
22 juillet 2021
4 307
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/>';
Messages postés
118
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
5 juillet 2010
2
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 !
Messages postés
18569
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
22 juillet 2021
4 307
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
Messages postés
118
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
5 juillet 2010
2
Ah, voila le nœud du problème.
Comment ajouter le ?login=$log ?

Merci !
Messages postés
18569
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
22 juillet 2021
4 307
Sur le lien ...