Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/09/2007, à 01:37

x@v

script de vérification [php]

Bonjour,
voilà j'ai un script d'identification qui ne veux pas marcher :
Je ne comprend pas, si quelqu'un peux m'expliquer d'ou sa vient wink

<?php
session_start();
if(isset($_POST['pseudo']) && isset($_POST['mot_de_passe'])) 
{
    $nom=$_POST['pseudo'];
    $mot_de_passe=$_POST['mot_de_passe'];
    if(verification($mot_de_passe, $nom) === true) {
    $_SESSION['nom']= $nom;
    header ('location:admin_interface.php');
    }
     else 
	  $message="Mauvais mot de passe";
}

function verification($mot_de_passe, $nom)
{
  include ("../inc/connexion.php");
  $query = 'select * from admin';
  $result = mysql_query($query, $lien) or mysql_error();
  $affiche=mysql_fetch_assoc($result);
	$pseudo=$affiche['pseudo'];
	$passe=$affiche['passe'];
	if($nom==$affiche['pseudo'] && $mot_de_passe==$passe)
        return true;
    else
        return false;
}
?>
<html>
<head>
<style>
body {font-size:1em;}
#boite{ width:30em;}
#centrer {position:absolute; left:50%; width:30em; margin-left:-15em; }
fieldset>legend {background:#FDE2B0;padding: 0 5px 0 5px; font-family:Georgia, "Times New Roman", Times, serif; font-style:italic;  color:red;}
legend {background:#FDE2B0;padding: 0 5px 0 5px; font-family:Georgia, "Times New Roman", Times, serif; font-style:italic;  color:red; }
input{font-family:Georgia, "Times New Roman", Times, serif; font-style:italic;  color:red;}
form>fieldset { margin:10px 0 0 -12px; padding:10px;color:#003333; border: 1px dashed #FF9900;text-align:right;}
fieldset { padding:30px;color:#003333; border: 1px dashed #FF9900;text-align:right; margin:0px 0 0 0;}
#cle{ float:left; margin:30px 0 0 0px; padding:0 0px 0 0; }
</style>
</head>
<body>
<div id="centrer">
<p id="identifiez"><h3>Identifiez-vous</h3>
Bonjour, merci de saisir votre code utilisateur et votre mot de passe.</p><br />
<span style="color:red;font-weight:bold;"><?php echo $message;?></span>
<form id="boite" action="auth.php" method="POST">
<fieldset>
<em id="cle"><img src="../img/key.jpg" alt="cle"></em>
<legend id="pour_ie">interface d'administration</legend><br>
<label for="Login"><em class="texte">Login</em></label>
<input class="input" type="text" size="20" name="pseudo" id="input0" onKeyUp="if(this.value!='') this.size=this.value.length" />
<br><br><label for="mot_de_passe"><em class="texte">Mot de passe</em></label> 
<input class="input" type="password" size='20' name="mot_de_passe" id="input1" onKeyUp="if(this.value!='') this.size=this.value.length" />
<p><input type="submit" value="Connexion" /></p>
</fieldset>
</form>
</div>
</body>
</html>

la table

CREATE TABLE admin (
  pseudo varchar(40) NOT NULL default '',
  passe int(11) NOT NULL default '',
  prenom varchar(40) NOT NULL default '',
  UNIQUE KEY pseudo (pseudo)
) TYPE=MyISAM;

Merci

Dernière modification par x@v (Le 02/09/2007, à 21:41)


[-- qwerty user --]

Hors ligne

#2 Le 02/09/2007, à 13:09

HymnToLife

Re : script de vérification [php]

x@v a écrit :

voilà j'ai un script d'identification qui ne veux pas marcher :

Plutôt que "ça ne veut pas marcher", tu ne crois pas que ça serait mieux de décrire précisément ce que ça fait au lieu de marcher ?


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#3 Le 02/09/2007, à 13:14

x@v

Re : script de vérification [php]

Il me permet de me logger sur une interface d'administration (pour un cms perso)
en faite j'avais un problème de variable dans

include ("../inc/connexion.php");

j'avais une variable $nom qui est le nom de la base.
Curieusement en l'écrasant ici

$nom=$_POST['pseudo'];

sa bloque le script surement que je perd la connexion, mais je serai curieux d'en savoir plus.
merci
edit
après dans chaque page ou je veux protéger l'accès je test la présence de la variable $_SESSION['nom'];
Mais tout fonctionne à présent, bien entendu.

Dernière modification par x@v (Le 02/09/2007, à 13:16)


[-- qwerty user --]

Hors ligne

#4 Le 02/09/2007, à 13:17

HymnToLife

Re : script de vérification [php]

x@v a écrit :

en faite j'avais un problème de variable dans

include ("../inc/connexion.php");

j'avais une variable $nom qui est le nom de la base.
Curieusement en l'écrasant ici

$nom=$_POST['pseudo'];

sa bloque le script surement que je perd la connexion, mais je serai curieux d'en savoir plus.

On pourrait avoir également le contenu de connexion.php ainsi que le message d'erreur que tu as en lançant le script ?


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#5 Le 02/09/2007, à 13:22

x@v

Re : script de vérification [php]

justement on à aucun message d'erreur "il n'y en a pas pour des erreur d'initialisation de variable".
le fichier connexion avec la variable $nom.

<?php
$serveur='';
$nom='';
$passe='';
$base='';
###################################CONNEXION##############
$lien=@mysql_connect($serveur, $nom, $passe);
$aujourd_hui=date("Y-m-d et H-i");	
// test de connexion au serveur
if (!$lien) {
	echo "Désolé, connexion à impossible ";
@mail("artotal@gmail.com", "Problème: fldb207.serveursdns.net", "Impossible de se connecter au serveur $serveur à $aujourd_hui");
	echo '<div style="font-family:tahoma;">Impossible d\'établir une connexion avec le serveur, l\'administrateur à été prévenu par email</font>\n';
	exit;
 }

if (!@mysql_select_db ($base, $lien)){
@mail("artotal@gmail.com", "Problème: fldb207.serveursdns.net", "Impossible de se connecter à la base de donnée : $base sur le serveur :$serveur, $aujourd_hui");
echo '<div style="font-family:tahoma;">Impossible d\'établir une connexion avec la base, '.$base.' l\'administrateur à été prévenu par email</font>\n';
$erreurbdd=mysql_error();
exit;
}
?>

et donc dans chaque page pour avoir un extranet, je met un test comme citer plus haut, de cette forme :

function extranet_entree()
{
  if (!isset($_SESSION['nom']))
	header('location:auth.php');
}

[-- qwerty user --]

Hors ligne

#6 Le 02/09/2007, à 13:29

mulima

Re : script de vérification [php]

pour passer php en mode 'verbose' tu fait un error_reporting('2047') en debut de script
et la tu auras les notice etc... c violent mais ca peut aider au debug

ensuite ....
header ('location:admin_interface.php');
il vaut mieux mettre une majuscule a Location
et il est préférable de mettre l'url complète du redirect + un espace apres les :


dans la table ... tu n'as qu'un seul enregistrement ...?

Hors ligne

#7 Le 02/09/2007, à 14:01

x@v

Re : script de vérification [php]

je connaissait pas tu peux m'en dire plus ?

error_reporting('2047')

Tu me dit que sa serai mieux mais mieux à quoi ?

ensuite ....
header ('location:admin_interface.php');
il vaut mieux mettre une majuscule a Location
et il est préférable de mettre l'url complète du redirect + un espace apres les :

Merci

edit ->
j'ai trouvé des infos sur la gestion des erreurs
http://www.phportail.net/articles/82-error-reporting-ou-comment-comprendre-une-erreur.php

Dernière modification par x@v (Le 02/09/2007, à 14:04)


[-- qwerty user --]

Hors ligne

#8 Le 02/09/2007, à 14:32

HymnToLife

Re : script de vérification [php]

http://www.php.net/manual/fr/function.error-reporting.php

Et tu n'as pas répondu à cette question :

mulima a écrit :

dans la table ... tu n'as qu'un seul enregistrement ...?


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#9 Le 02/09/2007, à 14:36

x@v

Re : script de vérification [php]

Trois enregistrement, mais tout fonctionne à present, j'ai réussi à isolé le problème.
"la variable nom"
smile


[-- qwerty user --]

Hors ligne

#10 Le 02/09/2007, à 17:02

scholi

Re : script de vérification [php]

x@v a écrit :

j'ai réussi à isolé le problème.
"la variable nom"

c'est à dire??

Sinon tu peux modifier le titre et marquer résolu!


S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

Hors ligne

#11 Le 02/09/2007, à 17:41

x@v

Re : script de vérification [php]

trois enregistrement mais j'ai changé la requette pour en avoir plusieurs, j'avais vu qu'sa stoquait que le premier résultat de la table, mais merci quand même.
d'ailleurs pour une redirection j'utilise souvent des superglobal ou :

header('Location: '.$_POST['destination']);

A la fin d'une requette...
Donc majuscule et espace si ça fonctionne pourquoi changer ?

Dernière modification par x@v (Le 02/09/2007, à 21:41)


[-- qwerty user --]

Hors ligne

#12 Le 02/09/2007, à 21:42

x@v

Re : script de vérification [php]

exemple complet :

<?php
###################################CONNEXION##############
require ("../inc/connexion.php");
// Ce script permet d'ajouter ou de mettre à jour un article dans la base de donnée
  $titre = $_POST['titre'];
  $page = $_POST['page'];
  $time = time();
  $ecrivain = $_POST['ecrivain'];
  $article_text = addslashes($article_text);
  $titre = addslashes($titre);
  if (isset($_POST['article']) && $_REQUEST['article']!='')
  {  # Modification d'un article #
    $query = "update article
              set titre = '$titre',
              article_text = '$article_text',
              ecrivain  = '$ecrivain',
              modifier = $time
              where id = $article";

$result=mysql_query($query, $lien);

    $requete = "update pages
              set page = '$page',
              description = '$description',
	      rubrique = '$rubrique'
              where id_article = $article";

$result=mysql_query($query, $lien);

if (!$result)
  {
    echo 'Il y a une erreur à l\'execution de cette requete de mis à jour : <pre>'.$query.'</pre>';
    echo mysql_error($lien);
    exit;
  }

$requete=mysql_query($requete, $lien);

if (!$requete)
  {
    echo 'Il y a une erreur à l\'execution de cette requete de mis à jour : <pre>'.$requete.'</pre>';
    echo mysql_error($lien);
    exit;
  }

  }
  else 
  {         ########### SI c'est un nouvel article ##########

    $query = "insert into article values
            ('',  '$ecrivain', '$titre', '$article_text', '$image', $time, $time, $time)";
	$result=mysql_query($query, $lien);
      $id_article = mysql_insert_id();
//echo $dernier_id;
    if (!$result)
       return false;

  $date = date('Y-m-d');
  $requette_pages = "insert into pages 
                (page, description, rubrique, id_article)
              values 
                ('$page', '$description', '$rubrique', $id_article)";
   $pages = mysql_query($requette_pages, $lien) or mysql_error($lien);

 

  if (!$result) 
  {
    echo 'Il y a une erreur à l\'execution de cette requete : <pre>'.$query.'</pre>';
    echo mysql_error();
    echo 'Vous devez prévenir l\'administrateur';
    @mail($mail, $_SERVER['HTTP_HOST'].':: erreur de requette', 'L\'équipe '.$_SERVER['HTTP_REFERER'].$_SERVER['HTTP_HOST'].' vous remercie Et vous envoie cet email vous prévenant d\'une requette mal insérer de la page "article envoyé"');
    exit;
  }
if (!$pages)
  {
    echo 'Il y a une erreur à l\'execution de cette requete : <pre>'.$requette_pages.'</pre>';
    echo mysql_error();
    echo '<br>Vous devez prévenir l\'administrateur';
    exit;
  }
}
header('Location: '.$_POST['destination']);
?>

[-- qwerty user --]

Hors ligne