Base de donnée

Résolu
lengabou - 5 sept. 2012 à 12:11
 lengabou - 9 sept. 2012 à 07:03
salut
j'ai un gros souci avec mon script de controle de donnée d'un formulaire. je n'arrive pas à comparer les données saisi dans le formulaire avec ceux de ma BD. voici le script en question

<?php
session_start();
include('connexion.inc.php');
if( !empty($_POST['login']) && !empty($_POST['code']))^M
{^M
$login = $_POST['login'];^M
$code = $_POST['code']; ^M
// $idcom = connex('awnet','param');^M
$requete = "SELECT * FROM users WHERE `login`= '".$login."' AND `code`= '".$code."' ";^M
//$requete="SELECT*FROM users WHERE 'login'= '".$_REQUEST['login']."'AND 'code'='".$_REQUEST['code']."'" ;^M
$result = mysql_query($requete) or die ('ce nom n éxiste pas');
mysql_close();
if(!$result)
{
echo " Erreur d'execution \n n° ".mysql_error()."
";
}
else
{
// Nous avons bien le bon utilisateur
// Nous créons la variable de session
$_SESSION['auth']="AUTH : OK";
// echo "Vous êtes authentifié";
header('location:myphone2.php');
exit();
}
}
else { echo "vous devez vous identifier "; }
?>

donc il s'agit de contrôler le login et le mot de passe saisi dans le formulaire avec le champ corespondant dans dans ma BD.
le pb avec mon script est le suivant: des que les champs du formulaire st remplie peut importe ce qu'on y saisi il t'autehentifie ce qui ne devrait pas être le cas. SVP si vous pouvez m'aider je suis noviste dans le language php5.
niyckson

11 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
7 sept. 2012 à 19:55
voilà comment j'ai testé

login toto
pass 1234

index.php
<?php 
session_start(); 

function conn(){ 

    /*a personaliser*/
    static $server='localhost';
    static $user='root';        /*yannick*/
    static $pass='';            /*yannick*/
    static $db='labase'; /*la tienne*/
    /********************/
    
    
    mysql_connect($server,$user,$pass) or die('server ?');       
    mysql_select_db($db) or die('db ?');
    //fin

}

/******************************************************************************/

/** a enlever une fois la table faite **/
conn();

$q1 = "CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `login` varchar(30) NOT NULL,
  `code` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2;";

if(mysql_query($q1)){
    
    $q2 = "INSERT INTO `users` (`id`, `login`, `code`) VALUES
    (1, 'toto', '1234');";
    mysql_query($q2);

}
else{
}

mysql_close();

/** **/

/******************************************************************************/

if( !empty($_POST['login']) && !empty($_POST['code']) ){
/*un peu plus de sécu anti xss et sqlinjection*/
conn();
//include('connexion.inc.php');
$login = mysql_real_escape_string(strip_tags($_POST['login'])); 
$code = mysql_real_escape_string(strip_tags($_POST['code'])); 
// $idcom = connex('awnet','param');^M 
$requete = "SELECT * FROM users WHERE `login`= '".$login."' AND `code`= '".$code."' limit 1"; 
//$requete="SELECT*FROM users WHERE 'login'= '".$_REQUEST['login']."'AND 'code'='".$_REQUEST['code']."'" ;^M 
$result = mysql_query($requete) or die ('demande impossible'); 
$control mysql_num_rows($result); /*j ai bien une ligne 1 alors membre*/
mysql_close();       
      
      // soit si plus de 1 ou aucun prob ! //
      if($control!==1)
      { 
   
      /*pas existant*/    
      
      } 
      
      else 
      { 
      // Nous avons bien le bon utilisateur 
      // Nous créons la variable de session 
      $_SESSION['auth']=true; 
      $_SESSION['login']=$login;
      // echo "Vous êtes authentifié"; 
      header('Location: myphone2.php');exit; 
      } 

}else {
echo "vous devez vous identifier ";
} 
?> 
<form action="" method="post">
login : 

code : 



</form>



myphone2.php
<?php
session_start();

if(isset($_GET['D'],$_SESSION['auth']) && (int)$_GET['D']===1 && $_SESSION['auth']===true){
unset($_SESSION['auth'],$_GET['D']);
/*ex*/
header('Location: index.php');exit;
}else{
}

if(isset($_SESSION['auth']) && $_SESSION['auth']==true){

/*ce que tu lui montre ...*/

echo 'bonjour '.$_SESSION['login'].' [ [?D=1 Me deconnecter] ]<hr>';
echo '';


}else{
exit('RIEN A FAIRE ICI !
');
}
//myphone2.php 
?>



Bonne programmation !
3
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
6 sept. 2012 à 09:34
bonjour tu devrais commencer ainsi

<?php 
session_start(); 

if( !empty($_POST['login']) && !empty($_POST['code']) ){
/*un peu plus de sécu anti xss et sqlinjection*/
include('connexion.inc.php');
$login = mysql_real_escape_string(strip_tags($_POST['login'])); 
$code = mysql_real_escape_string(strip_tags($_POST['code'])); 
// $idcom = connex('awnet','param');^M 
echo $requete = "SELECT * FROM users WHERE `login`= '".$login."' AND `code`= '".$code."' limit 1"; 
//$requete="SELECT*FROM users WHERE 'login'= '".$_REQUEST['login']."'AND 'code'='".$_REQUEST['code']."'" ;^M 
$result = mysql_query($requete) or die ('demande impossible'); 
$control mysql_num_rows($result); /*j ai bien une ligne 1 alors membre*/
mysql_close();       
      
      // soit si plus de 1 ou aucun prob ! //
      if($control!==1)
      { 
   
      /*pas existant*/    
      
      } 
      
      else 
      { 
      // Nous avons bien le bon utilisateur 
      // Nous créons la variable de session 
      $_SESSION['auth']=true; 
      // echo "Vous êtes authentifié"; 
      header('location:myphone2.php');exit; 
      } 

}else {
echo "vous devez vous identifier ";
} 
?> 
<!--
donc il s'agit de contrôler le login et le mot de passe saisi dans le formulaire
avec le champ corespondant dans dans ma BD. le pb avec mon script est le suivant: 
des que les champs du formulaire st remplie peut importe ce qu'on y saisi 
il t'autehentifie ce qui ne devrait pas être le cas.
SVP si vous pouvez m'aider je suis noviste dans le language php5. 
niyckson
-->
<form action="" method="post">
login : 

code : 



</form>



connexion.inc.php
et tu devrais mettre ça dans un repertoire 'secret' avec un .htaccess avec deny from all
dedans ...


Bonne programmation !
0
merci d'avoir reagit aussi vite!!!
j'i essayé ce que tu m'a donné mais ça ne passe toujours pas. le programme s'arrête au niveau du 2e if. j'ai fai quelques modificatio jusuque là pas de changement. voici le code.

<?php
session_start();
include('entete.php');
if( !empty($_POST['login']) && !empty($_POST['code']))
{
include('connexion.inc.php');
$login = mysql_real_escape_string(strip_tags($_POST['login']));
$code = mysql_real_escape_string(strip_tags($_POST['code']));
//$login = $_POST['login'];
//$code = $_POST['code'];
//$idcom = connex('awnet','param');
$requete = "SELECT * FROM users WHERE `login`= '".$login."' AND `code`= '".$code."' limit 1";
// $requete = "SELECT * FROM users WHERE `login`= '".$login."' AND `code`= '".$code."' ";
$result = mysql_query($requete,$idcom) or die ('demande impossible');
$control mysql_num_rows($result); /*j ai bien une ligne 1 alors membre*/
mysql_close();

// soit si plus de 1 ou aucun prob ! //
if($control!==1)
{
/* pas existant*/
echo " Erreur d'execution \n n° ".mysql_error()."
";

}
else
{
// Nous avons bien le bon utilisateur
// Nous créons la variable de session
$_SESSION['auth']=true;
// echo "Vous êtes authentifié";
header('location:myphone2.php');exit;
}
}
else { echo "vous devez vous identifier

"; }
?>
le if de controle de la requete afiche le message suivant dans le navigateur:

Erreur d'execution n° Access denied for user 'www-data'@'localhost' (using password: NO)

es ce que le fait d'avoir plusieur champ dans ma BD peut avoir une influence l'execution de la requete sql? j'utilise juste les champ "login" et "code".

merci pour ton coup de main

niyckson
0
stp à quoi sert le limi 1; sur la requête sql je ne comprend pas?
j'ai oublier dans le code la ligne $idcom = connex('awnet','param'); n'est pas commenté. sorry.
merci!!
niyckson
0

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

Posez votre question
susd Messages postés 4 Date d'inscription samedi 6 février 2010 Statut Membre Dernière intervention 6 janvier 2013
6 sept. 2012 à 12:57
Salut lengabou,

Le limit 1 spécifie simplement le nombre de lignes que mysql retourne.
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
6 sept. 2012 à 13:31
bonjour

limit comme 1 enregistrement donc le premier trouvé ... le code fonctionne je l'ai testé tu dois avoir une erreur dans un fichier en
include ...
++
Bonne programmation !
0
slt voici le code de mes include
connexion.inc.php
<?php
function connex($userawn,$param)
{
include_once('param.inc.php');

$idcom=@mysql_connect(MYHOST,MYUSER,MYPASS);
$idbase=@mysql_select_db(awnet);
if(!$idcom | !$idbase)
{
echo " <srcipt type=text/javascript>";
echo " alert('connexion impossible à la base $userawn')</srcipt>";
}
return $idcom;
}

?>

param.inc.php

<?php
define("MYHOST","localhost");
define("MYUSER",yannick");
define("MYPASS","yannick");

?>

je tiens a preciser que j'utilise apache2 sous linux comme serveur web



niyckson
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
7 sept. 2012 à 09:23
bonjour

param.inc.php

<?php
define("MYHOST","localhost");

define("MYUSER",yannick");
il manque un " devant le y de yannick ... ?

define("MYPASS","yannick");

?>




Bonne programmation !
0
OK MERCI
mais ce n'est pa cela le pb
dans ton 1er post tu parle de mettre connexion.inc.php dans un repertoire secret avec un .htacess dedans stp cmt sa se passe?
niyckson
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
7 sept. 2012 à 16:52
bonjour

je te dis ça ce soir ++

Bonne programmation !
0
yeeess
merci cod57 ça marche nikel maintenant. en fait ce dc j'avais besoin c'est du control que t'as effectué dans ton fichier myphone2.php le mien n'étais pas suffisant je l'ai donc modifier grace à celui que t'as posté,j'ai conservé mes fichiers include tel que je te l'ai montré aucune modif maintenant ça marche nikel; j'ai placé ce code juste en etête de ma page myphone2.php. encore merci!!!




niyckson
0
Rejoignez-nous