Fatal error

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Fatal error

Re: Fatal error

par moogli » 10 août 2011, 21:00

même problème la connexion PDO n'est pas faite quand tu est DANS le else vu que tu ne passe pas dans le elseif !!!!

fait ta connexion PDO avant le if ....
@+

Re: Fatal error

par poliboolol » 10 août 2011, 20:38

Je l'ai fait et ca me met:
Fatal error: Call to a member function prepare() on a non-object in /var/www/poliboolold.fr/htdocs/membres_inscription.php on line 59

Re: Fatal error

par moogli » 10 août 2011, 20:27

salut
Pardon pour le code (comme j'etait en invité, j'ai pas pu éditer mon message)
avec les balises
 ça aurait était mieux :)

le message t'indique que $req n'est pas un objet. 

Pourquoi ?

Parce que tu fait la connexion et la requête dans le elseif et que tu fait le closecursor() dans le else, il faut mettre le closecurso dans le elseif :)



@+

Re: Fatal error

par poliboolol » 10 août 2011, 19:10

Pardon pour le code (comme j'etait en invité, j'ai pas pu éditer mon message)

Code : Tout sélectionner

<?php session_start(); ?> <!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" xml:lang="fr" > <head> <title>poliboolold.fr</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <?php try { if(!isset( $_POST['pseudo'])AND !isset( $_POST['mdp']) AND !isset( $_POST['mdpdouble']) AND !isset( $_POST['email'])) { if(!isset( $_SESSION['id']) AND !isset( $_SESSION['pseudo'])) { ?> <form method="post" action="membres_inscription.php"> <p> Pseudo <input type="text" name="pseudo"/> mdp <input type="password" name="mdp"/> mdpdouble <input type="password" name="mdpdouble"/> email <input type="text" name="email"/> <input type="submit" value="Valider" /> <?php } } elseif(isset ($_SESSION['id']) AND !isset($_SESSION['pseudo'])) { echo"connecté"; } elseif ($_POST['mdp']!= $_POST['mdpdouble']) { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=**********;dbname=***************', '***********', '***********', $pdo_options); $req= $bdd->prepare('SELECT id FROM membres WHERE pseudo=:pseudo AND pass=:pass'); $req->execute(array('pseudo'=> $_POST['pseudo'],'pass'=> $_POST['mdp'])); $resultat= $req->fetch(); if(!$resultat) { if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email'])) { echo"recommencez"; } } } else { $pass_hache = sha1($_POST['mdp']); $req->closeCursor(); $requete = $bdd->prepare('INSERT INTO membres(pseudo, pass, email, date_inscription) VALUES(:pseudo, :pass, :email, CURDATE())'); $requete->execute(array('pseudo'=> $_POST['pseudo'], 'pass'=> $_POST['pass_hache'], 'email'=> $_POST['email'])); echo"Inscrit"; $requete->closeCursor(); } } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } ?> </body> </html>

Fatal error

par poliboolod » 10 août 2011, 19:08

Bonjour

Je suis en train de faire un script de la page d'inscription a l'espace membres (cf dernier tp du livre de php).
Je code et je teste le formulaire marche parfaitement, je clique sur le bouton valider.
Et la j'ai un fatal error:

Fatal error: Call to a member function closeCursor() on a non-object in /var/www/poliboolold.fr/htdocs/membres_inscription.php on line 59

Comme a mon habitude, je fait une recherche sur google pour essayer de trouver qu'es qui ne va pas !
Je trouve qu'il faut seulement mettre des closeCursor lorsqu'on fait un ou plusieur fetch . Comme j'ai fait un fetch a la requete ou il y'a le problème . Ca ne m'avance pas

Voila merci d'avance a ceux qui peuvent m'aider
Voici le code:
<?php
session_start();
?>
<!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" xml:lang="fr" >
   <head>
       <title>poliboolold.fr</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   </head>
   <body>

<?php

try
{
	if(!isset( $_POST['pseudo'])AND !isset( $_POST['mdp']) AND !isset( $_POST['mdpdouble']) AND !isset( $_POST['email']))
	{
		if(!isset( $_SESSION['id']) AND !isset( $_SESSION['pseudo']))
		{
			?>
			<form method="post" action="membres_inscription.php">
			
			<p>
			Pseudo <input type="text" name="pseudo"/>
			mdp <input type="password" name="mdp"/>
			mdpdouble <input type="password" name="mdpdouble"/>
			email <input type="text" name="email"/>
			<input type="submit" value="Valider" />

<?php
		}
	}
	
	elseif(isset ($_SESSION['id']) AND !isset($_SESSION['pseudo']))
	{
		echo"connecté";
	}

	elseif ($_POST['mdp']!= $_POST['mdpdouble'])
	{
		    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
   			 $bdd = new PDO('mysql:host=**********;dbname=***************', '***********', '***********', $pdo_options);
		$req= $bdd->prepare('SELECT id FROM membres WHERE pseudo=:pseudo AND pass=:pass');
		$req->execute(array('pseudo'=> $_POST['pseudo'],'pass'=> $_POST['mdp']));
		$resultat= $req->fetch();
			
			if(!$resultat)
{
		if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email']))
		{

echo"recommencez";
}
}
}
		else
		{
			$pass_hache = sha1($_POST['mdp']);
			$req->closeCursor();
			$requete = $bdd->prepare('INSERT INTO membres(pseudo, pass, email, date_inscription) VALUES(:pseudo, :pass, :email, CURDATE())');
			$requete->execute(array('pseudo'=> $_POST['pseudo'], 'pass'=> $_POST['pass_hache'], 'email'=> $_POST['email']));
			echo"Inscrit";
			$requete->closeCursor();
		}
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>

   </body>
</html>