Session qui ne fonctionne pas sur online

Résolu
Bonjour,

J'essaye un script que j'ai trouvé dans un tuto , celui fonctionne super sur FREE.fr mais par contre contre le même ne fonctionne pas sur oneline.net!
C'est un script pour protéger une page de mon site!
je mets le code ci dessous :

le formulaire

<form method="post" action="login.php">
<table border="0" width="400" align="center">
<tr>
<td width="200"><b>Vôtre login</b></td>
<td width="200"><input type="text" name="login"></td>
</tr>
<tr>
<td width="200"><b>Vôtre mot de passe<b></td>
<td width="200"><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="login">
</td></tr>
</table>
</form>


la page login.php

<?
$login_defini = "admin";// on défini un login pour la démo
$password_defini = "password"; // on défini un password pour la démo
// On vérifie les valeur du formulaire
if ( $login == $login_defini && $password == $password_defini )
{
// Si les password et login sont valides
session_start();// on démarre une session
// On enregistre les variables login et password dans la session en cours
session_register("login");// Attention, pas de signe $ dans le
session_register
session_register("password");
header('location: afficher.php');// Redirection sur une page pour afficher le
résultat
}
else{
// Si les password et login ne sont pas valides, on affiche un message
d'erreur
print 'Password ou login non valide';
}
?>


et la page afficher.php qui doit s'afficher si ok

<?
session_start();// on démarre la session
// On affiche les variables enregistrées dans la sessions
print 'Vôtre login est '.$login.' et vôtre password '.$password.'<br>';
// Simple non ? , maintenant fesons quelques vérifications
if ( !session_is_registered("password") )
{
print 'Vôtre mot de passe n\'est pas enregistré <br>';
}
// on affiche un lien pour terminer une session
print '<a href="logout.php">Détruire la session</a><br>';
?>


et donc j'ai cette erreur la

Notice: Undefined variable: login in /flex/domain/monsite.fr/site/www/admin/login.php on line 6
et la ligne c'est celle ci
if ( $login == $login_defini && $password == $password_defini )

merci de votre aide car la je comprends pas que ca marche sur free et pas sur online

9 réponses

  1. Bonjour,

    <?php session_start(); ?>
    est à mettre en tout tout tout début de page. même avant le DOCTYPE :). ( en parlant du fichier login.php bien évidement ).
    0
    1. Modérateur
      Salut,

      Pourquoi ton source php ne démarre pas par
      <?php 
      ?

      Cdlt
      0
      1. Modérateur
        Sur ton espace Free, ils ont peut être activé REGISTER_GLOBALS (ou un truc du genre), est c'est pas sécurisé.

        A la place de :
        if ( $login == $login_defini && $password == $password_defini )
        Utilises plutôt :
        if ( $_REQUEST['login'] == $login_defini && $_REQUEST['password'] == $password_defini )
        0
        1. Modérateur
          Et cela dépend aussi peut être de la version php.

          Utilisation de register_globals (le $login du formulaire) : cette fonctionalité a été supprimée en PHP 5.4.0
          0
      2. Bonjour et merci a tous pour vos réponses,
        j'ai modifié comme m'a dit Nhenry, je n'ai plus l'erreur d'origine mais j'ai celle ci dans une autre ligne
        Fatal error: Call to undefined function session_register() in /flex/domain/monsite.fr/site/www/admin/login.php on line 12

        ma ligne 12 et 13

        session_register("login");// Attention, pas de signe $ dans le session_register
        session_register("password");
        0
        1. Modérateur
          Pour gérer les valeurs d'une session :
          $_SESSION['Cle']=$Valeur;
          0
        2. ce qui donne dans mon cas? dsl mais je débute ......
          0
        3. $_SESSION['Cle']=$Valeur;
          donc $_SESSION['login']=$password ;c'est ca?
          0
        4. Modérateur
          Fais des essais.
          0
      3. ca me fait des erreurs !
        encore ......
        0
        1. j'ai fais comme ca
          $_SESSION['login']=$login_defini ;
          $_SESSION['password']=$password_defini ;
          et je n'ai plus d'erreur!
          c'est bien ca qu'il fallait faire?
          0
          1. Modérateur
            Oui, voilà.
            Conseil, on évite d'enregistrer le MDP quand c'est pas nécessaire, normalement, juste le login devrait suffire dans ton cas.
            0
        2. ah bon! je vais voir ca !
          par contre peut tu me dire comment afficher une image avec un lien en php car je beug!
          j'ai testé ca mais ca ne m'affiche pas l'image qui est dans le même dossier que mes pages
          echo "<br><br><a href='quitter.php'> <img src='\deconnexion.jpg' /> </a>";
          0
          1. Modérateur
            Il ne faut pas mettre \ devant le nom de l'image
            0
        3. merci ca marche, mon cache n'etait pas vidé ....
          0
          1. Modérateur
            Normalement l'antislash ( \ ) est associé aux noms sous Windows.

            Ton site sur free ou online est sur un serveur linux, les chemins de fichiers utilisent alors le slash ( / ) donc par exemple /dossier/deconnexion.jpg mais pas de /deconnexion.jpg car la signification est alors à la racine du site. et dossier/deconnexion.jpg signifie depuis l'endroit courant donc cela va chercher sur /dossier/dossier/deconnexion.jpg

            Pour le même répertoire la syntaxe devrait être tout simplement deconnexion.jpg

            Mais comme indiqué plus haut on est sur un serveur linux et les noms sont sensibles aux majuscules/minuscules. Deconnexion.jpg n'est pas le même fichier que deconnexion.jpg
            0
        4. j'ai donc corrigé et maintenant tout est ok.
          Merci à vous de votre aide c'etait super sympa
          0