jackbocar

  • Site web
  • Nombre de sujets
    152
  • Nombre de messages
    456
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses derniers messages sur les forums

jackbocar
le 16/07/2007 à 08:47
Compte Invalide ?
Bonjour,

J'ai mis des echo $sql; sous chaque ligne, elles revoient biens les requêtes et le couple login et mot de passe est correcte.

La seule erreur qui persiste c'est d'une part :
Ou compte invalide ;
Ou erreur un champ est vide.

Et lorsque je supprime les contrôles formulaires, j'ai toujours cette erreur :

Fatal error: Call to a member function fetch() on a non-object in function_verification.php on line 17

LIGNE 17 : $row = $result->fetch();

D'autre part, as-tu une autre façon de contrôler les lignes ?

Et qu'est-ce que cela change d'avoir des "mysql_escape_string" sur des données de test, qui ne sont pas codées :
Login : jack
Mot-de-passe : jackjack

Dès l'hors que le script s'arrête sur des erreurs avant la fin ?

Mais, je vais tout de même tester avec des "mysql_escape_string", voir si ça change quelque chose.

Jack Bocar
jackbocar
le 16/07/2007 à 06:37
Compte Invalide ?
--
-- Base de données: `application`
--

-- --------------------------------------------------------

--
-- Structure de la table `user`
--

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`pseudo` text NOT NULL,
`motdepasse` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Contenu de la table `user`
--

INSERT INTO `user` (`id`, `pseudo`, `motdepasse`) VALUES
(1, 'jack', 'jackbocar');


J'ai changé PSEUDO PAR NOM DANS LA TABLE, MAIS C'EST LE MÊME RESULTAT


Voici le script complet et réécrit sans erreur, mais ça ne fonctionne toujours pas ?


/---------------------------------------------------------------------------/

<?php
// connection et reqête

function verification($nom,$pass) {

define('USER', 'jackbocar');
define('PASS', 'XXXXXXXXX');

define('DSN', 'mysql:host=localhost;$dbname=application');
try {
$dbh = new PDO(DSN, USER, PASS);
}catch (PDOException $e) {
print "Erreur ! : ". $e->getMessage(). "<br />";
die();
}

//création de la requête

$nom_sql = $dbh->quote($nom) ;
$pass_sql = $dbh->quote($pass) ;

$sql = "SELECT count(*) as nbres FROM user "
. " WHERE login='$nom_sql' AND pass='$pass_sql' ";

//execution de la reqête

$result = $dbh->query($sql);
$row = $result->fetch();
$result = null ;

if($row['nbres'] == 1) {
return TRUE;
}else{
return FALSE;
}
}
?>

/---------------------------------------------------------------------------/

PAGE VERIFICATION

<?php
//initialisation de la session
session_start();

include ('function_verification.php');

// Ici, je ne comprend pas pourquoi ici c'est pseudo
if (isset($_POST['pseudo']) && isset($_POST['motdepasse']) ) {

// ALORS QUE LA C'EST NOM
$nom = $_POST['pseudo'];
$motdepasse = $_POST['motdepasse'];

//verification de la validité du mot de passe ET ENCORE LA NOM
if (verification($nom, $motdepasse) ) {

//si le mot de passe est valide, l'user est identifié
// en suite on change d(identifiant de session
session_regenerate_id();


// on sauveragarde son nom dans la session
$_SESSION['nom'] = $nom;

$message = " Vous &ecirc;tes correctement identifi&eacute;";
}else {
// avertissement
$message = " Erreur de mot de passe &nbsp; ";
$message .= '<a href="auth.php" />Retour</a>';
}
}else {
// avertissement
$message = " Un des champs est vide &nbsp; ";
$message .= '<a href="auth.php" />Retour</a>';
}
?>
<html><head><title>V&eacute;rification identification</title></head><body>

<?php echo $message ?>

<br /><br /></body></html>


/---------------------------------------------------------------------------/

PAGE AUTH


<form action="verif.php" method="post">
Votre Login : &nbsp; <input type="text" name="nom"><br />
Mot de passe : <input type="password" name="motdepasse"><br /><br />
<input type="submit" value="Connexion">
</form>

/---------------------------------------------------------------------------/

PAGE SECURE

<?php
session_start();

// on vérifie si l'user est bien identifié
if (!isset($_SESSION['nom'])) {

// pas identifié ou authentifié, retour au formulaire
header ('Location: auth.php');
exit();
}
?>



/---------------------------------------------------------------------------/

LES TESTS DE HACHAGE POUR SECURISER L'APPLICATION PAR LA SUITE

<strong>Crypt MD5</strong><br />
<?php
$donnee = 'secretXzB';
$md5 = md5($donnee);
echo $md5;
?>
<br /><br />
<strong>Crypt SHA1</strong><br />
<?php
$donnee = 'secretXzB';
$sha1 = sha1($donnee);
echo $sha1;
?>
<br /><br />
jackbocar
le 15/07/2007 à 19:10
Compte Invalide ?
Bonjour,

Merci, oui j'ai rectifé les erreurs.

Mais ça ne fonctionne toujours pas.

Et pourtant le deuxième script est sortit de mon livre PHP5 avancé ?

Jack Bocar

LAGLOBULE -> As tu reçu mon message sur ta messagerie ?

Jack Bocar
jackbocar
le 15/07/2007 à 16:33
Compte Invalide ?
Bonjour,

Je ne comprends pas pourquoi j'ai cette erreur :


Fatal error: Call to a member function fetch() on a non-object in function_connexion.php on line 17

LIGNE 17 :
$data = $result->fetch();


Formulaite d'Identification :

<html><head><title>Identification</title></head><body>

<form action="verif.php" method="post">
Votre Login : &nbsp; <input type="text" name="login"><br />
Mot de passe : <input type="password" name="pass"><br /><br />
<input type="submit" name="connexion" value="Connexion">
</form>

</body></html>


La vérification :


<?php
session_start();

include ('function_connexion.php');

if (isset($_POST['login']) && isset($_POST['pass']) ) {

$login = $_POST['login'];
$pass = $_POST['pass_md5'];

if (verification($login, $pass_md5) ) {
session_regenerate_id();

$_SESSION['login'] = $login;
$message = "Vous &ecirc;tes correctement identifi&eacute;";
}else{
$message = "Erreur de mot de passe";
$message .= '<a href="auth.php" />Retour</a>';
}
}else{
$message = "Un des champs est vide";
$message .= '<a href="auth.php" />Retour</a>';
}
?>
<html><head><title>V&eacute;rification identification</title></head><body>

<?php echo $message ?>

<br /><br /></body></html>


La Fonction connexion :

<?php
function verification($login,$pass_md5) {
$dbhote = 'localhost';
$dbuser = 'jackbocar';
$dbpass = 'XXXXXXXXX';
$dbbase = 'base_test';

$dsn = "mysql:dbname=$dbbase;host=$dbhote";
$dbh = new PDO($dsn, $dbuser, $dbpass);

$nom_sql = $dbh->quote($login);
$pass_sql = $dbh->quote($pass_md5);


$sql = "SELECT count(*) as nbres FROM user WHERE login==nom_sql AND pass=$pass_sql ";
$result = $dbh->query($sql);
$data = $result->fetch();

$result = null;
if ($data['nbres'] == 1) {
return TRUE;
}else {
return FALSE;
}
}
$sth = null;
?>
jackbocar
le 15/07/2007 à 11:42
Compte Invalide ?
J'ai une erreur que je ne vois pas !

Merci de votre aide

Jack Bocar

<?php
$dbhote = 'localhost';
$dbuser = 'jackbocar';
$dbpass = 'XXXXXXXXXX';
$dbbase = 'Base_test';

$dsn = "mysql:dbname=$dbbase;host=$dbhote";
$dbh = new PDO($dsn, $dbuser, $dbpass);
?>

<?php
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

$sql = ('SELECT count(*) FROM user as nbres WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5(mysql_escape_string($_POST['pass'])).'"');
$result = $dbh->query($sql);
$data = $result->fetch();

$dbh = null;

if ($data['nbres'] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
exit();
}

elseif ($nbres == 0) {
$message = 'Compte invalide.';
}

else {
$message = 'La base de donn&eacute;e est down.';
}
}
else {
$message = 'Un des champs requis est vide.';
}
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Verification identification</title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="index,follow" />
<meta name="category" content="histoire" />
<meta name="revisit-after" content="1 days" />
<meta name="author" lang="fr" content="Jack Bocar" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link rel="stylesheet" type="text/css" media="screen" href="./css/main.css" />
</head>
<body>
<?php echo $message ?>
<br /><br />

<form action="verif.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo stripslashes(htmlentities(trim($_POST['login']))); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo stripslashes(htmlentities(trim($_POST['pass']))); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
</body>
</html>
jackbocar
le 14/07/2007 à 17:04
Comment Faire une messagerie
Bonjour,

Désolé, je ne voulais pas te mettre en colère, c'était juste une information.

Pour ce qui est de la sécurisation, je suis d'accord avec toi, il faut modifier le code à cet effet pour celui qui veut s'en servir en ligne.


Jack Bocar
jackbocar
le 14/07/2007 à 17:00
Limiter la durée de l'affichage
Bonjour,

J'ai une page de News, et une new reste quelquefois visibles plusieurs semaines. J'aimerai limiter le temps visible de la new à 7 jours.

Sans pour autant qu'elle soit détruite, mais qu'elle passe dans les archives ou sur la page suivante.

Mais, je ne sais pas par où commencer, et surtout, je n'ai pas sur mon livre PHP5 avancé, une source pour m'aider.

Quelqu'un à t'il une idée pour limité la durée d'une new ?

Merci de votre aide

Jack Bocar
jackbocar
le 14/07/2007 à 16:52
Comment Faire une messagerie
Bonjour,

J'ai testé ta messagerie interne, elle fonctionne bien. Mais, je pense que tu ne devrais pas mettre les informations de SESSION sur la page SUPPRIMER.

Il y a une erreur à chaque fois avec les SESSIONS.

Et puis, celui qui détruit le message, il ne peut détruire que son message grâces aux SESSIONS personnelles déjà ouvertes.

Merci de me dire si cette constatation est une erreur de ma part, et comment y remédier.

Jack Bocar
jackbocar
le 13/07/2007 à 11:03
Recherche Full Text
Bonjour,

Peux-tu me dire la différence entre :

str_replace

str_ireplace

Je ne vois pas vraiment !!!

Merci

Jackbocar
LoadingChargement en cours