redirection vers un page d'un membre inscrit

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 : redirection vers un page d'un membre inscrit

Re: redirection vers un page d'un membre inscrit

par baneagle » 06 juin 2011, 10:36

Haaaa voui effectivement... Moi même étant débutant je ne connaissais pas ce principe de maquillage de l'url mais honnêtement, j'ai vraiment pas l'intention de me casser la tête la-dessus pour un de mes sites; c'est pas franchement utile à part si vraiment on veut éviter toute magouille de la part de l'utilisateur, c'est vrai que là ça peut être intéressant mais est-ce vraiment ce qui est recherché aujourd'hui? :roll:

Re: redirection vers un page d'un membre inscrit

par moogli » 05 juin 2011, 20:52

@baneagle : effectivement c'est ainsi que cela fonctionne au final, mais l'url qu'il soufaite est réalisable avec l'url rewriting qui au final n'est qu'une "décoration" de l'url :)


@+

Re: redirection vers un page d'un membre inscrit

par baneagle » 05 juin 2011, 16:02

Moi je serais toi, j'enverrai les informations du membre dans l'url de redirection vers une page en php qui sélectionnerait ton membre via une requête mysql utilisant ces variables.

Page procédant à la redirection:

Code : Tout sélectionner

header(Location ('minikdo.free.fr/user.php?pseudo='.$Pseudo['pseudo'].''));
Page récupérant les informations (user.php):

Code : Tout sélectionner

$pseudo = htmlspecialchars($_GET['pseudo']; $info = mysql_fetch_assoc(mysql_query("SELECT * FROM tabledesusers WHERE pseudo = '".$pseudo."'")) or die (mysql_error());
Et maintenant avec $info[], tu as toutes les données de ton user.

Exemple: $pseudo = $info['nom de la colonne contenant le pseudo']

Re: redirection vers un page d'un membre inscrit

par moogli » 05 juin 2011, 11:08

j'ajouterais que pour ce qui est de la redirection si la page html n'existe pas de toute façon cela ne sert a rien, donc soit tu créer une page html a chaque fois qu'un membre s'inscrit (attention a bien vérifier l'unicité du pseudo quelque soit la casse, et virer les accents et autre truc du genre) et la ça va fonctionner mais bon avec autant de page que de membre, si tu modifie ta charte graphique ben c'est pas maintenable, d’où le fait d'avoir une seule page php et l'url rewriting ;)



@+

Re: redirection vers un page d'un membre inscrit

par Ryle » 05 juin 2011, 01:33

Y a plein de chose qui vont pas... tout d'abord, la fonction header() attends une chaine de caractères :
header('Location: ......');
Ensuite, lorsqu'une variable est spécifiée entre apostrophes, celle-ci n'est pas interprétées. Il est donc recommandé de sortir les variables des chaines et de les concaténer (avec l'opérateur point ".")
header('Location: minikdo.free.fr/userpage/'. $Pseudo .'/....');
Enfin $Pseudo n'est pas un tableau mais une variable (donc pas de $Pseudo['pseudo'])

Ce ne sont pas des erreurs, mais c'est pas logique pour autant :
ton if($Id>0) ne s'applique qu'à l'instruction qui le suit immédiatement puisque aucune accolade ne délimite de bloc d'instruction.
Et pis juste utiliser l'instruction $_POST['pseudo']; ne sert à rien... c'est comme si je te disais "violet", php est pas plus avancé ;)

Re: redirection vers un page d'un membre inscrit

par ytzmi » 04 juin 2011, 21:08

bon, bêh j'ai repris ce que j'avais fait avec ma redirection qui ne foncitonne pas erreur de syntax
<?php
  include ('protected/login.inc.php');
  //include ('protected/ctrl.inc.php');

  $Pseudo=$_POST["pseudo"];
  $Password=$_POST["password"];

  $Message_non_envoyé="Une erreur indéterminée s'est produite dans la transmission de ta demande.<BR><BR>Vérifies tes identifiants";

  // ON VERIFIE LES CHAMPS OBLIGATOIRES

  if ($Pseudo=="") exit("Le Nom est obligatoire");
  if ($Password=="") exit("Le mot de passe est obligatoire");

  //ON RECUPERE LES INFORMATIONS DU VISITEUR ET ON VERIFIE SI SON  INSCRIPTION  EST ACTIVE
  $sql = "SELECT Email, Activation FROM kdo WHERE Pseudo = '$Pseudo' AND Password='$Password'";
  $resultat = mysql_query($sql,$connexion) or die ("Erreur : ".mysql_error());

  while ($row = mysql_fetch_assoc($resultat))
    {
    $Pseudo = $row["Nom"];
    $Email = $row["Email"];
    $Activation = $row["Activation"];
    }

  if ($Activation!=1):
    echo ("<br>ooops un petit souci c'est produit,
	<br> soit parce que tu n'es pas encore inscrit,<BR> soit parce que ton inscription n'a pas été activée.<BR><BR> Tu peux procéder à une nouvelle inscription ou activer ton inscription à partir<BR> du courriel qui t'a été adressé, <br><br>Soit tu as fait une erreur dans le nom ou le mot de passe qui t'a été fourni.");
  endif;

	// TOUT EST BON ON DIRIGE VERS LA PAGE
	 if($Id>0)
	session_register("pseudo");
	session_register("password");
	$_Activation['activation'] = 1;
	$_POST['pseudo'];
	header(Location ('minikdo.free.fr/userpage/$Pseudo['pseudo']/kdo_['pseudo'].htm'));

exit;
	
 //FERMETURE DE LA CONNEXION
  mysql_close($connexion);


?>
c'est à la ligne "header" que ça coince et je ne vois pas ce que je dois mettre ou enlever

le principe est que lorsque le membre inscrit s'authentifie puisse être redirigé vers sa propre page.
donc, j'ai pensé faire un dossier "userpage" puis le dossier du l'utilisateur et ensuite sa page.

plutôt que de faire une redirection par membre, que cela se génère "tout seul".

j'ai l'impression en écrivant cela que je me suis un peu compliqué la vie...
peut-être que je peux éviter le dossier "userpage" et aller directement dans le dossier "pseudo". :roll:

Re: redirection vers un page d'un membre inscrit

par ytzmi » 04 juin 2011, 20:00

Ooops : :oops:
c'est déjà traduit....

mais je reste aussi :?: nulls.

désolée

Re: redirection vers un page d'un membre inscrit

par ytzmi » 04 juin 2011, 19:38

Ab

j'ai mis un "exit" après "header, j'ai toujours une page blanche

moogli

pas de souci, je me doute bien que mon script est obsolète.

j'ai essayé le tien, pas de souci, mais il me renvoie à une page blanche, car je ne comprends pas comment lui dire où aller.

certes, tu me dis d'aller sur apage et rewriter, mais, déjà que je rame pour comprendre ce que je fais en français, mais là en anglais... je souffre.
ok, je vais prendre le temps de traduire.

pour la redirection, je préfère utiliser le pseudo, plutôt que l'id.

mais toutes les façons, id ou pseudo, je cherche comment faire

merci pour vos réponses.
merci

Re: redirection vers un page d'un membre inscrit

par AB » 02 juin 2011, 01:31

Après un header de redirection TOUJOURS mettre un exit (cf manuel)
header("Location: kdo_ytzmi.htm");
exit;

Re: redirection vers un page d'un membre inscrit

par moogli » 01 juin 2011, 23:59

salut,

alors pour commencer quelque commentaire sur ton code :

- il ne faut pas utiliser directement $_POST['quelque chose'] sans être sur que l'index existe dans le tableau (tu ne peux être certain que le formulaire posté est le tiens ;) ) donc pour cela on utilise isset et ou empty ce qui réalise en même tes 2 premiers if ;)
- session_register, c'est une méthode un peu obsolète on lui préférera directement la super globale $_SESSION (donc au lieu de session_register('pseudo') => $_SESSION['pseudo'] = $pseudo
- tu place des variables que tu n'utilise pas (genre $activation, $email)
- tu utilise des variables qui n'existe pas ID, $_Activation

ton code pourrait être ainsi
<?php
  include ('protected/login.inc.php');
  //include ('protected/ctrl.inc.php');

  $Message_non_envoyé = "Une erreur indéterminée s'est produite dans la transmission de ta demande.<BR><BR>Vérifies tes identifiants";
 
  // ON VERIFIE LES CHAMPS OBLIGATOIRES
  if (!empty($_POST["pseudo"]) {
	if (!empty($_POST["password"]){

  //ON RECUPERE LES INFORMATIONS DU VISITEUR ET ON VERIFIE SI SON  INSCRIPTION  EST ACTIVE
  $sql = "SELECT Email, Activation FROM kdo WHERE Pseudo = '$Pseudo' AND Password='$Password'";
  $resultat = mysql_query($sql,$connexion) or die ("Erreur : ".mysql_error());
 
  while ($row = mysql_fetch_assoc($resultat)){
    $Pseudo = $row["Nom"];
    //$Email = $row["Email"]; <= inutile
    $Activation = $row["Activation"];
    }
  if ($Activation!=1){
    echo ("<br>ooops un petit souci c'est produit,
        <br> soit parce que tu n'es pas encore inscrit,<BR> soit parce que ton inscription n'a pas été activée.<BR><BR> Tu peux procéder à une nouvelle inscription ou activer ton inscription à partir<BR> du courriel qui t'a été adressé, <br><br>Soit tu as fait une erreur dans le nom ou le mot de passe qui t'a été fourni.");
  }
  else {
        // TOUT EST BON ON DIRIGE VERS LA PAGE
		$_SESSION['pseudo'] = $_POST['pseudo'];
	}
 //FERMETURE DE LA CONNEXION
  mysql_close($connexion);
	}
	else {
	// mdp vide
	}
}
else {
//pseudo vide
}
?>
 
Pour ce qui est de la belle url, il faut voir si l'url rewriting est activé sur le serveur si oui la doc => http://httpd.apache.org/docs/trunk/rewrite/

a partir de la tu peux faire de belle url, pour la simplicitée de la chose je conseil de passer la clef primaire de la table utilisateur dans l'url :) (par exemple utilisateur/truc-142.html. redirige vers la page utilisateur.php?pseudo=truc&id=142).

dans tous les cas tu peux très bien faire une page "squellette" identique pour tous le monde mais tu différencie les membres par leur id en session :)


@+

Re: redirection vers un page d'un membre inscrit

par ytzmi » 01 juin 2011, 23:29

ma page est bien dans le même répertoire que mon script php.

en fait, tout est dans le même répertoire. il aurait fallu que je fasse des répertoires ?

et même en mettant location avec L, j'ai toujours ma page blanche.

Re: redirection vers un page d'un membre inscrit

par Ryle » 01 juin 2011, 22:46

1. Attention à la syntaxe : header("Location: .... ") (avec un L majuscule pour être compatible avec les différents navigateurs). Si la page blanche persiste, vérifie que tu as bien ta page kdo_ytzmi.htm dans le même répertoire que ton script php (attention aux majuscules/minuscules, à l'extension htm ou html, ... )

2. Tu peux :) L'argument de la fonction header() est une chaine de caractères, la façon dont celle-ci est constituée est bien égal à php du moment qu'elle est correcte :) (faut juste pas oublier les points pour concaténer les chaines entre guillemets et les variables php ;))

redirection vers un page d'un membre inscrit

par ytzmi » 01 juin 2011, 20:58

bonjour

avant de posté, j'ai cherché dans le forum s'il y avait un sujet similaire.
au cas où ce serait un "doublon" m'en excuser car dans ce que j'ai lu, je n'ai pas vu ce que je pouvais prendre pour mon problème.

le principe du site est en premier lieu de s'inscrire.
vu qu'il y aura plusieurs membres, avec chacun sa page.
quand il se sera authentifié par son pseudo et son m d p, il devra être diriger vers sa page.

j'ai chercher dans plusieurs forums, je n'ai pas trouvé ou alors c'était avec des termes beaucoup trop professionnels pour moi.

voici ce que j'ai fait.
<?php
  include ('protected/login.inc.php');
  //include ('protected/ctrl.inc.php');
  
  $Pseudo=$_POST["pseudo"];
  $Password=$_POST["password"];
  
  $Message_non_envoyé="Une erreur indéterminée s'est produite dans la transmission de ta demande.<BR><BR>Vérifies tes identifiants";
  
  // ON VERIFIE LES CHAMPS OBLIGATOIRES
  
  if ($Pseudo=="") exit("Le Nom est obligatoire");
  if ($Password=="") exit("Le mot de passe est obligatoire");  

  //ON RECUPERE LES INFORMATIONS DU VISITEUR ET ON VERIFIE SI SON  INSCRIPTION  EST ACTIVE
  $sql = "SELECT Email, Activation FROM kdo WHERE Pseudo = '$Pseudo' AND Password='$Password'";
  $resultat = mysql_query($sql,$connexion) or die ("Erreur : ".mysql_error());
  
  while ($row = mysql_fetch_assoc($resultat)) 
    { 
    $Pseudo = $row["Nom"];
    $Email = $row["Email"]; 
    $Activation = $row["Activation"];
    }

  if ($Activation!=1):
    echo ("<br>ooops un petit souci c'est produit,
	<br> soit parce que tu n'es pas encore inscrit,<BR> soit parce que ton inscription n'a pas été activée.<BR><BR> Tu peux procéder à une nouvelle inscription ou activer ton inscription à partir<BR> du courriel qui t'a été adressé, <br><br>Soit tu as fait une erreur dans le nom ou le mot de passe qui t'a été fourni.");
  endif;

	// TOUT EST BON ON DIRIGE VERS LA PAGE
	 if($Id>0) {
	session_register("pseudo");
	session_register("password");
	$_Activation['activation'] = 1;
	$_POST['pseudo'];
	header("location:kdo_ytzmi.htm");
	}

 //FERMETURE DE LA CONNEXION
  mysql_close($connexion);

?>
1 - j'ai mis en location : kdo.ytzmi.htm et j'ai une page blanche.
donc, ok, j'ai dû faire une erreur quelque part.

2 - vu qu'il y aura plusieurs membres, dans la "location" est-ce qu'il serait possible de mettre quelque chose comme "kdo_"$pseudo".htm, afin que lorsque le membre s'authentifiera, il aille directement à sa page.

merci