Rechercher

Probleme de clic sur bouton valider

 
Mikelduke
Date : 14/08/2010
Forum msgs : 3
Rank : Utilisateur

Probleme de clic sur bouton valider

Lien directde mikelduke le 14/08/2010 à 18:04
Bonjour à chacun,

Tout d'abord merci de l'aide qui me sera apporté et ensuite acceptez mes regrets en ce qui concerne mon Français. Je ne le suis pas et je dois faire de grand progrès avec la langue de Molière.

J'ai créé un serveur léger pour résoudre un problème de script
voici l'adresse du site http://www.navigoo.com/demo/

Si tout fonctionnait je devrais entrer un login : "demo" et un mot de passe : "demo"
et de ma page index.php je devrais avoir accès à un page planning.php

Or il semblerait que mon script ne fonctionne pas et je reste sur la même page index.php

Voici le script si un lecteur codeur averti avait une idée et si je pouvais apprendre de mes erreurs ce serait idéal. Il semblerait que la fonction if($clic==1) ne fonctionne pas.

Merci de votre aide je vais laisser le post ainsi pour ne pas alourdir ma demande.

Frank
<?php
include("./phpinclude/fonction.inc");

// Clic sur le bouton valider
if ($clic == 1) {
    $query = "select * from utilisateur where LOGIN='$login'";
    $result = @mysql_query($query);
    $nbligne = @mysql_num_rows($result);
    if ($nbligne == 0) {
        $message = "Login incorrect !";
    } else {
        $ligne = @mysql_fetch_array($result);
        $pass02 = $ligne['PASS'];
        $nuti = $ligne['NUTI'];

        $passebout = crypt($pass, $pass02);
        if (strcmp($pass02, $passebout)) {
            //mot de passe invalide
            $message = "Mot de passe incorrect !";
        } else {
            //mot de passe correct
            $passok = 1;
            $info = base64_encode("$nuti:$passok");
            setcookie("olras", "$info");

//                     if($ligne['USE_PLAN']==0){
//                        header("Location: planningag.php?nlieu=$ligne[PLAN_DEF]");
//                     } else {
            header("Location: planning.php");
//                       }
        }
    }
}
?>

<html>
    <head>
        <title>NAVIGOO&reg; Web - <?php echo $titre_pages; ?></title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <link rel="stylesheet" href="style/main.css">
        <script language="JavaScript">
            <!--
            function MM_swapImgRestore() { //v3.0
                var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
            }

            function MM_preloadImages() { //v3.0
                var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
                    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
                    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
            }

            function MM_findObj(n, d) { //v3.0
                var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
                    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
                if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
                for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
            }

            function MM_swapImage() { //v3.0
                var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
                if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
            }

            function envoiform() {
                document.form.submit();
            }

            function focus() {
                document.form.login.focus()
            }
            //-->
        </script>
    </head>
    <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" style="background-color:#EADBC3;">
        <table border="0" cellspacing="0" cellpadding="0" align="center">
            <tr>
                <td align="center">&nbsp;</td>
            </tr>
            <tr>
                <td align="center" width="532" height="231" style="background-image:url(images/fd_connexion.gif); background-repeat:no-repeat">
                    <br><br><br><br>
<?php
if ($message != "") {

    echo ("<center><p class=\"texterouge\"><b>" . $message . "</b></p></center>");
}
?>
                    <form name="form" action="index.php" method="post">
                        <input type="hidden" name="clic" value="1">
                        <table border="0" cellspacing="0" cellpadding="5" align="center">
                            <tr>
                                <td class="textenoir">Identifiant: </td>
<?php
if ($message == "Mot de passe incorrect !") {
    echo ("<td class=\"textenoir\"><input type=\"text\" name=\"login\" value=\"" . $login . "\" class=\"textenoir\" size=\"30\" maxlength=\"30\" style=\"background-color:#FFFFFF;\"></td>");
} else {

    echo ("<td class=\"textenoir\"><input type=\"text\" name=\"login\" class=\"textenoir\" size=\"30\" maxlength=\"30\" style=\"background-color:#FFFFFF;\"></td>");
}
?>

                            </tr>
                            <tr>
                                <td class="textenoir">Mot de passe: </td>
                                <td class="textenoir"><input name="pass" type="password" class="textenoir" size="30" maxlength="30" style="background-color:#FFFFFF;"></td>
                            </tr>
                            <tr>
                                <td class="textenoir">&nbsp;</td>

                                <td class="textenoir" align="center"></td>

                            </tr>
                        </table>
                    </form>
                </td>
            </tr>
            <tr>
                <td align="center"><a href="javascript&#058;envoiform();" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('valider','','images/boutons/valider2.gif',1)"><img src="images/boutons/valider1.gif" name="valider" alt="Valider" border="0"></a></td>
            </tr>
        </table>
        <br>
        <p align="center">&nbsp;</p>
        <script language="JavaScript">
            focus();
        </script>
    </body>
</html>

Sky
sky
Date : 13/08/2003
Forum msgs : 4435
Rank : Admin
Localisation : toulouse

Re : Probleme de clic sur bouton valider

Lien directde sky le 16/08/2010 à 09:44
Salut

1) il faut utiliser la variable global $_POST pour récupérer les données qui provienne d'un formulaire.

2) TOUJOURS sécurisé les données envoyés par un utilisateur avant des les utilisées dans une requêtes MySQL.


Si j'ai bien compris, tu utilise le mot de passe crypter dans la base de donnée comme grain de sel pour la fonction crypt();
Est-ce bien le cas ?


J'ai corrigé un petit peux le code PHP :
<?php
include("./phpinclude/fonction.inc");

// Clic sur le bouton valider
if($_POST)
{
    $login = mysql_real_escape_string($_POST['login']);
    $password = $_POST['password'];
   
    $query = "select * from utilisateur where LOGIN='$login'";
    $result = @mysql_query($query);
    $nbligne = @mysql_num_rows($result);
   
    if ($nbligne == 0) {
        $message = "Login incorrect !";
    } else {
        $ligne = @mysql_fetch_array($result);
        $pass02 = $ligne['PASS'];
        $nuti = $ligne['NUTI'];

        $password_Crypted = crypt($password, $pass02);
        if ($password_Crypted == $pass02) {
            //mot de passe invalide
            $message = "Mot de passe incorrect !";
        } else {
            //mot de passe correct
            $passok = 1;
            $info = base64_encode("$nuti:$passok");
            setcookie("olras", "$info");

            header("Location: planning.php");
            exit();
        }
    }
}
?>


Sky

Gunning Sky
ViaPHP : Cours PHP
A quoi sert Internet Explorer ? A télécharger Firefox !
Mikelduke
Date : 14/08/2010
Forum msgs : 3
Rank : Utilisateur

Re : Probleme de clic sur bouton valider

Lien directde mikelduke le 16/08/2010 à 13:38
Bonjour et merci SKY,

Je viens de tester ton code et effectivement je franchis le problème de $clic==1 maintenant j'ai effectivement un problème de reconnaissance du mot de passe, car comme tu l'avais anticipé je suis à la ligne de code de mot de passe incorrect!

j'utilise la fonction PASSWORD dans la base de donnée Mysql pour crypter le mot de passe de l'utilisateur dans la table 'utilisateur'

devrais je changer la fonction CRYPT dans le code par PASSWORD ???

Merci de ton aide...



comme dis le proverbe lusophone
celui qui sait , sait et celui qui ne sait pas, reste triste...


frank
Sky
sky
Date : 13/08/2003
Forum msgs : 4435
Rank : Admin
Localisation : toulouse

Re : Probleme de clic sur bouton valider

Lien directde sky le 16/08/2010 à 16:02
Salut

La fonction PASSWORD de MySQL n'est pas conçu pour une utilisation comme tu le fais. Ceci est d'après la doc MySQL : http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html#function_password

Je te conseil d'utiliser MD5 ou encore SHA1.

Voici un exemple avec SHA1:
<?php
include("./phpinclude/fonction.inc");

// Clic sur le bouton valider
if($_POST)
{
    $login = mysql_real_escape_string($_POST['login']);
    $password = $_POST['password'];
   
    $query = "select * from utilisateur where LOGIN='$login'";
    $result = @mysql_query($query);
    $nbligne = @mysql_num_rows($result);
   
    if ($nbligne == 0) {
        $message = "Login incorrect !";
    } else {
        $ligne = @mysql_fetch_array($result);
        $password_BDD = $ligne['PASS'];
        $nuti = $ligne['NUTI'];

         // On crypte le mot de passe avec SHA1
        $password_Crypted = sha1($password);
       
        if ($password_Crypted != $password_BDD) {
            //mot de passe invalide
            $message = "Mot de passe incorrect !";
        } else {
            //mot de passe correct
            $passok = 1;
            $info = base64_encode("$nuti:$passok");
            setcookie("olras", "$info");

            header("Location: planning.php");
            exit();
        }
    }
}
?>

Ceci implique de changer le type de champs PASSWORD dans MySQL aussi... tu devra surement supprimer et remettre le mots de passe des utilisateurs.

Gunning Sky
ViaPHP : Cours PHP
A quoi sert Internet Explorer ? A télécharger Firefox !
Mikelduke
Date : 14/08/2010
Forum msgs : 3
Rank : Utilisateur

Re : Probleme de clic sur bouton valider

Lien directde mikelduke le 16/08/2010 à 18:30
Bonjour à ceux qui suivent ce post.

Je viens de m'apercevoir que les paramètres php de mon serveur affichaient
ragister_globals = off

et donc que mes commandes form ne fonctionnaient pas
Merci à SKY qui m'a permis de comprendre ce problème en mettant sur la piste

je dois donc modifier le code et le réécrire

$clic=$_POST['clic'];
$login=$_POST['login'];

et ce pour toutes les variables

du coup ce sont les commandes setcookie qui ne fonctionne pas et je dois les transformer en mode session...
pour ceux qui veulent m'aider à avancer merci...

Si quelqu'un connaît un tuto ou un lien qui explique comment programmer en php avec un serveur register_globals en mode OFF merci de l'info..

Tout en sachant qu'en mode ON la sécurité affectée...(j'écris sous l'autorité de SKY..)

Frank
Sky
sky
Date : 13/08/2003
Forum msgs : 4435
Rank : Admin
Localisation : toulouse

Re : Probleme de clic sur bouton valider

Lien directde sky le 17/08/2010 à 09:30
Salut

Pour développer sur un serveur qui a les registar_global=off il faut faire appel aux variables par leurs vrai nature :

Depuis l'URL : $_GET
Depuis un formulaire : $_POST

Les variables d'environnement : $_ENV
Les variables serveur : $_SERVER
Les sessions : $_SESSION

On peux en citer quelques autres, mais le plus important étant de bien utiliser $_GET et $_POST.


Pour passer ton script en mode session ... ben, c'est facile pour l'identification, mais je doute qu'il fonctionne avec l'agenda après.

Voici un exemple basic pour la page de connexion :
<?php
// Il faut toujours mettre un session_start()
// sur une page qui doit utiliser des sessions
session_start();

include("./phpinclude/fonction.inc");

// Clic sur le bouton valider
if($_POST)
{
    $login = mysql_real_escape_string($_POST['login']);
    $password = sha1($_POST['password']);
   
    $query = "SELECT * FROM utilisateur WHERE LOGIN='$login' && PASS='$password'";
    $result = mysql_query($query);
    $nbligne = mysql_num_rows($result);
   
   
    if ($nbligne != 1) {
        // mot de passe incorrect
        $message = "Login et/ou mot de passe incorrect !";
    } else {
        // Mot de passe OK
        $user = mysql_fetch_assoc($result);

        $passok = 1;
        $nuti = $user['NUTI'];
       
        $info = base64_encode("$nuti:$passok");

        $_SESSION['connected'] = 1;
        $_SESSION['olras'] = $infos;

        header("Location: ./planning.php");
        exit();
    }
}
?>

Après, si tu veux vérifier qu'une personne est bien connecté, il suffit de voir si la session connected existe bien et est bien égale à 1 et tu fais ce que tu doit faire avec la variable session olras. Exemple :
<?php
session_start();

include("./phpinclude/fonction.inc");

if(empty($_SESSION['connected']))
{
    header('location: ./connexion.php');
    exit();
}

// Le reste du code de la page protégée
?>

Gunning Sky
ViaPHP : Cours PHP
A quoi sert Internet Explorer ? A télécharger Firefox !
 

You need a account to use the forum.

Inscription

Connexion