Page "mon compte"

Résolu/Fermé
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 - 20 oct. 2009 à 20:41
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 - 24 oct. 2009 à 19:49
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

Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
21 oct. 2009 à 11:11
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 !
0
papouuu86 Messages postés 77 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
21 oct. 2009 à 11:26
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
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
21 oct. 2009 à 11:28
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 !
0
papouuu86 Messages postés 77 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
21 oct. 2009 à 11:39
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?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
21 oct. 2009 à 11:41
je veux qu'on compte (B) puisse voir les infos que A a choisi de divulguer.
0
papouuu86 Messages postés 77 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
21 oct. 2009 à 11:55
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.
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
22 oct. 2009 à 13:20
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 !
0
papouuu86 Messages postés 77 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
22 oct. 2009 à 14:08
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
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
22 oct. 2009 à 21:47
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 !
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
23 oct. 2009 à 14:14
Je me permet de upper !

Par avance merci !
0
papouuu86 Messages postés 77 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
23 oct. 2009 à 14:16
J'ai pas trop d'idée la...
c'est quoi ton code?
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
23 oct. 2009 à 14:24
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 ?
0
papouuu86 Messages postés 77 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
23 oct. 2009 à 14:55
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 ?
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
23 oct. 2009 à 15:04
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 !
0
papouuu86 Messages postés 77 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
23 oct. 2009 à 15:53
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.
0
avion-f16 Messages postés 19073 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 janvier 2023 4 450
23 oct. 2009 à 16:12
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/>';
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
24 oct. 2009 à 12:13
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 !
0
avion-f16 Messages postés 19073 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 janvier 2023 4 450
24 oct. 2009 à 14:18
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
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
24 oct. 2009 à 18:16
Ah, voila le nœud du problème.
Comment ajouter le ?login=$log ?

Merci !
0
avion-f16 Messages postés 19073 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 janvier 2023 4 450
24 oct. 2009 à 18:48
Sur le lien ...
0