$get et compagnie !

Bostak
Invité n'ayant pas de compte PHPfrance

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,

ViPHP
xTG
ViPHP | 7331 Messages

10 déc. 2011, 20:13

Bah tu remplaces :
header('Location: membre.php');
par :
header('Location: index.php?truc=membre');
Modifié en dernier par xTG le 10 déc. 2011, 22:39, modifié 1 fois.

Bostak
Invité n'ayant pas de compte PHPfrance

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,

ViPHP
xTG
ViPHP | 7331 Messages

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;
}

Bostak
Invité n'ayant pas de compte PHPfrance

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,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

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

@+
Il en faut peu pour être heureux ......

Bostak
Invité n'ayant pas de compte PHPfrance

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,

Bostak
Invité n'ayant pas de compte PHPfrance

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,

Eléphanteau du PHP | 49 Messages

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