Page 1 sur 1

Lien dans un champ de TABLE

Posté : 11 juil. 2006, 23:25
par dunbar
Bonsoir,

Je voudrais savoir s'il est possible de créer un champs avec une adresse de redirection automatique (exemple: page1.php)
Cela pour redirigé automatiquement vers certaine page telle ou telle utilisateur ?

Merci

Posté : 11 juil. 2006, 23:34
par Truc
Salut,

C'est possible, pourqui pas ?

Suffit d'enregistrer la page (page1.php) comme tu l'as dis et éventuellement le chemin puis d'utiliser une fonction de redirection header()

Posté : 11 juil. 2006, 23:39
par dunbar
Salut,

C'est possible, pourqui pas ?

Suffit d'enregistrer la page (page1.php) comme tu l'as dis et éventuellement le chemin puis d'utiliser une fonction de redirection header()
Je me suis mal exprimer je crois.
Le liens de ma page 1 devrais être inscrit dans le champ de ma table (exemple URL) se qui aurais comme objectif que suivant le login attacher celui-ci serais automatiquement redirigé

J'aurais ne table avec "login, pass, url" et suivant le login il redirigerais sur l'url corepondant au login

Posté : 11 juil. 2006, 23:51
par Truc
Et ?!
Je ne vois pas la différence :-k

Lors de l'identification du récupères les données du membre y compri le champ URL avec la page de redirection. Si l'identification est réussi alors tu rediriges vers cette page récupérée de la base.

Posté : 11 juil. 2006, 23:57
par dunbar
Et ?!
Je ne vois pas la différence :-k

Lors de l'identification du récupères les données du membre y compri le champ URL avec la page de redirection. Si l'identification est réussi alors tu rediriges vers cette page récupérée de la base.
Ah oui ok je commence à comprendre
cela me donnerais un truc du genre ???
header('Location: $url');
C'est exact ???

Posté : 12 juil. 2006, 00:03
par Truc
C'est exact mais attention à ne pas inclure une variable entre apostrophes, elle ne serait pas interprétée. Sépare la variable du reste de la chaine de caractères:
header('Location:'.$url); 

Posté : 12 juil. 2006, 00:10
par dunbar
C'est exact mais attention à ne pas inclure une variable entre apostrophes, elle ne serait pas interprétée. Sépare la variable du reste de la chaine de caractères:
header('Location:'.$url); 
Ok alors encore une question stp, j'ai créer un champ (VARCHAR) ou j'ai indiqué l'url "http://monsite.com" c'est correct ??? parce que si oui cela ne marche pas, quand je me logue mon formulaire se vide et rien ne se passe.... :oops:

Mon code
<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

        $base = mysql_connect ('localhost', '', ''); 
        mysql_select_db ('', $base);
        
        // on teste si une entrée de la base contient ce couple login / pass
        $sql = 'SELECT count(*) FROM membre WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_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['login'] = $_POST['login'];
            header('Location:'.$url);
            exit();
        }
        // si on ne trouve aucune réponse, le visiteru s'est trompé soit dans son login, soit dans son mot de passe
        elseif ($data[0] == 0) {
            $erreur = 'Compte non reconnu.';
        }
        // sinon, alors la, il y a un gros problème :)
        else {
            $erreur = 'Probè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.';
    }
}
?>
<html>
<head>
<title>Accueil</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>

<body background="img/grd-4px.gif">
<p align="center"><font size="6" face="Academy Engraved LET">Identification</font><font face="Algerian" size="6">
</font>:</p>
<p align="center">&nbsp;</p>
<p align="center"><br />
</p>
<form action="index.php" method="post">
  <div align="center">Login :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo stripslashes(htmlentities(trim($_POST['login']))); ?>">
    <br />
    Mot de passe : 
    <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo stripslashes(htmlentities(trim($_POST['pass']))); ?>">
  </div>
	<div align="center">
    <br />
    <input type="submit" name="connexion" value="Connexion">
  </div>
</form>
<div align="center">
  <?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</div>
</body>
</html>

Posté : 12 juil. 2006, 00:20
par Truc
Tu ne récupères pas le champ de la base de données:
$sql = 'SELECT url FROM membre WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_POST['pass'])).'"';
Et remplace ces lignes:
 if ($data[0] == 1) { 
par
 if (mysql_num_rows($req) == 1) { 
header('Location:'.$url); 
par
$url = $data['url']; //avec url le nom du champ
header('Location:'.$url); 
Décale ou enlève aussi cette ligne
mysql_free_result($req);
après ce test:
 if (mysql_num_rows($req) == 1) { 

Posté : 12 juil. 2006, 00:37
par dunbar
Merci beaucoup ça fonctionne nickel

Merci encore :P