Session qui ne fonctionne pas sur online

Résolu/Fermé
jeandeleaudepluie - 31 janv. 2015 à 16:55
 jeandeleaudepluie - 1 févr. 2015 à 10:54
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

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
jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235
31 janv. 2015 à 17:03
Salut,

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

Cdlt
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
31 janv. 2015 à 17:08
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
jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235
31 janv. 2015 à 17:13
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
jeandeleaudepluie
31 janv. 2015 à 18:36
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
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
31 janv. 2015 à 18:45
Pour gérer les valeurs d'une session :
$_SESSION['Cle']=$Valeur;
0
jeandeleaudepluie
31 janv. 2015 à 18:52
ce qui donne dans mon cas? dsl mais je débute ......
0
$_SESSION['Cle']=$Valeur;
donc $_SESSION['login']=$password ;c'est ca?
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
31 janv. 2015 à 19:01
Fais des essais.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeandeleaudepluie
31 janv. 2015 à 19:02
ca me fait des erreurs !
encore ......
0
jeandeleaudepluie
31 janv. 2015 à 19:05
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
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
31 janv. 2015 à 19:41
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
jeandeleaudepluie
31 janv. 2015 à 19:59
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
jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235
31 janv. 2015 à 20:03
Il ne faut pas mettre \ devant le nom de l'image
0
merci ca marche, mon cache n'etait pas vidé ....
0
jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235
Modifié par jee pee le 31/01/2015 à 20:18
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
jeandeleaudepluie
1 févr. 2015 à 10:54
j'ai donc corrigé et maintenant tout est ok.
Merci à vous de votre aide c'etait super sympa
0