$get et compagnie !

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 : $get et compagnie !

Re: $get et compagnie !

par liens_geeks » 12 déc. 2011, 11:29

Salut,
Comme te l'a écrit xTg, ta page index.php va :
- recuperer l'argument passé en GET sur index.php
- en fonction de cet argument, inclure le fichier correspondant

Essaye d’écrire la trame de ton script en français, tu verras ça aide beaucoup. Quand la logique est là, tu n'as plus qu'à traduire en PHP

Faire des inclusions directes comme ça include($_GET['page'].'.php') ce n'est pas top au niveau sécurité car ça laisse à l'internaute le choix d'essayer d'inclure ce qu'il veut.
Fait des switch ou des if

Re: $get et compagnie !

par Bostak » 11 déc. 2011, 12:49

Juste une petit précision, moi c'est parce que je n'ai pas à proprement dit de lien, c'est lorsque je clic sur connexion, que les infos sont traités par le fichier, connexion.php et après il m'envoie sur la page membre. Et vu que je n'ai pas de lien en dur je ne vois pas comment procéder.

Cordialement,

Re: $get et compagnie !

par Bostak » 11 déc. 2011, 12:46

merci de votre réponse mais je dois vous avouer que je ne comprend toujours pas,

"Donc lorsque le visiteur clique sur le lien news, le paramètre page avec la valeur news est transmis à la page index.php. Sur cette dernière on récupère cette valeur. Et donc l'include qui dans le code est include($_GET['page'].'.php') va devenir dynamiquement include('news.php') et c'est donc bien la page contenant le news qui va être incluse dans la page noyau. De même pour l'accueil. Cette fois le paramètre page sera égal à accueil et donc l'include sera modifié en fonction."

J'ai bien lu le lien que vous m'avez envoyé mais c'est toujours aussi flou je ne vois pas comment procéder.

Cordialement,

Re: $get et compagnie !

par moogli » 11 déc. 2011, 00:57

ben :
En fait ce que tu souhaites faire s'appelle un bootstrap, c'est un fichier central qui se charge d'inclure les autres fichiers.
ce que xTG appel bootstrap, est aussi nommé pseudo frame http://www.phpdebutant.org/article68.php

@+

Re: $get et compagnie !

par Bostak » 11 déc. 2011, 00:21

Je suis débutant en php et je ne comprend pas trop, et en faisant des recherches sur bootstrap je n'ai pas trouvé grand chose d'intéressant. Pourriez vous m'éclaircir plus à ce sujet ?
Car je ne comprend toujours pas comment faire.

Cordialement,

Re: $get et compagnie !

par xTG » 10 déc. 2011, 22:42

En fait ce que tu souhaites faire s'appelle un bootstrap, c'est un fichier central qui se charge d'inclure les autres fichiers.

Prenons le cas d'une url de la forme : index.php?page=nom_page
$page = (isSet($_GET['page'])) ? $_GET['page'] : '';
switch($page){
  case 'membre' :
    include('membre.php');
  break;
  case 'admin' :
    include('admin.php');
  break;
  case 'accueil' :
  default :
    include('accueil.php');
  break;
}

Re: $get et compagnie !

par Bostak » 10 déc. 2011, 22:04

Oui j'ai bien remplacé par ce que vous m'avez dit, mais il faut maintenant que je mette un $_GET quelque part, et je ne vois pas ou ni comment.

Cordialement,

Re: $get et compagnie !

par xTG » 10 déc. 2011, 20:13

Bah tu remplaces :
header('Location: membre.php');
par :
header('Location: index.php?truc=membre');

$get et compagnie !

par Bostak » 10 déc. 2011, 19:13

Bonsoir tout le monde,

Je me tourne de nouveau une fois vers vous car j'ai un problème qui me rend fou. Je vous explique j'ai quatre fichier, le premier qui est index.php, contient un include qui envoie directement sur la page accueil.php; le deuxième fichier, accueil.php qui contient le formulaire de connexion pour accéder à l'espace membre, une fois que l'on envoie les informations, elles sont traitées par connexion.php, et si l'on est un membre, cela nous envoie directement sur membre.php. Jusqu'à la tout va bien mais je voudrais que toutes mes URL passe par index.php; je m'explique lorsque je clic sur le bouton inscription je suis bien redirigé vers : "index.php?lol=inscription". Je voudrais donc que lorsque je me connecte à l'espace membre je ne sois pas rediriger vers le fichier membre.php, mais "index.php?truc=membre", mais je ne m'en sors pas, mais alors pas du tout. Pourriez vous m'aider ?

Code : Tout sélectionner

<?php include('accueil.php'); ?>
accueil.php

Code : Tout sélectionner

<html> <head> <title>Accueil</title> <link rel="stylesheet" type="text/css" href="cssblog.css" /> </head> <body> <div id="wrapper"> <div id="header"> <div id="block_id"> Connexion à l'espace membre :<br /> <table> <form action="connexion.php" method="post"> <tr> <td> login : </td> <td> <input type="text" name="users" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"> </td> </tr> <tr> <td> Mot de passe : </td> <td> <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"> </td> </tr> <tr> <td> <input type="submit" name="connexion" value="Connexion"> </td> </tr> </form> </table> <a href="index.php?lol=inscription">Vous inscrire</a> </div> </div> <div id="body"> <?php include('connexion.php'); ?> </div> </div> <?php if (isset($erreur)) echo '<br /><br />',$erreur; ?> </body> </html>

connexion.php :

Code : Tout sélectionner

<?php // on teste si le visiteur a soumis le formulaire de connexion if (isset($_GET['lol']) && $_GET['lol'] == 'inscription'){ include('inscription.php'); } else { if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') { if ((isset($_POST['users']) && !empty($_POST['users'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) { // connexion à la base de donnée $base = mysql_connect ('localhost', 'root', ''); mysql_select_db ('blog', $base); // on teste si une entrée de la base contient ce couple users / pass $sql = 'SELECT count(*) FROM users WHERE login="'.mysql_real_escape_string($_POST['users']).'" AND pass="'.mysql_real_escape_string(md5($_POST['pass'])).'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); mysql_free_result($req); mysql_close(); // si on obtient une réponse, alors l'utilisateur est un membre if ($data[0] == 1) { session_start(); $_SESSION['users'] = $_POST['users']; header('Location: membre.php'); exit(); } // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son users, soit dans son mot de passe elseif ($data[0] == 0) { $erreur = 'Compte non reconnu.'; } // sinon problème else { $erreur = 'Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.'; } } else { $erreur = 'Au moins un des champs est vide.'; } } ?> <?php } ?>

membre.php :

Code : Tout sélectionner

<?php include('member.php'); ?> <html> <head> </head> <body> Bienvenue <?php echo htmlentities(trim($_SESSION['users'])); ?>!<br /> <a href="deconnexion.php">Déconnexion</a> <form id="form1" method="post" action="membre.php"> <div><label> Ins&eacute;rez votre commentaire<br /> <textarea name="comment" id="comment" cols="45" rows="5"></textarea> </label> <br /> <input name="Submit" type="submit" Value="envoyer" /></div> </form> </body> </html>
Cordialement,