Problème accés db cause enccolade

Résolu/Fermé
val - Modifié par val le 6/03/2011 à 16:08
eternity63 Messages postés 33 Date d'inscription dimanche 6 mars 2011 Statut Membre Dernière intervention 19 janvier 2018 - 7 mars 2011 à 12:59
Bonjour, j'ai un petit soucis avec un script php qui ne veux pas me connecter à ma base de donnée...
Message d'erreur :
Parse error: syntax error, unexpected '{' in /homepages/31/d357858736/htdocs/signup/login.php on line 27


Mon code :
<?php 
session_start(); 
if(!empty($_SESSION['membre'])) 
{ 
  header('Location: index.php'); 
} 

if(!empty($_POST)) 
{ 
  $valid = true; 
  extract($_POST); 
   
  if(empty($login)) 
  { 
    $valid = false; 
    $erreurlogin = 'Indiquez votre login'; 
  } 
   
  if(empty($pass)) 
  { 
    $valid = false; 
    $erreurpass = 'Indiquez votre mot de passe'; 
  } 
   
  if($valid) 
  { 
  try{ 
  $bdd = new PDO('mysql:host=dbmonhebergeur;dbname=ma_base', 'mon_nom_utilis', 'mon_pass') or die(print_r($bdd->errorInfo())); 
  $bdd->exec('SET NAMES utf8'); 
  } 
   
  catch(Exeption $e){ 
  die('Erreur:'.$e->getMessage()); 
  } 
   
  $req = $bdd->prepare('SELECT * FROM membre WHERE login=:login AND pass=:pass'); 
  $req->execute(array( 
    'login'=>$login, 
    'pass'=>sha1($pass) 
  )); 
  $data = $req->fetch(); 
  if($req->rowCount()==0) 
  { 
    $valid = false; 
    $erreurid = 'Mauvais identifiants'; 
  } 
   
  if($req->rowCount()>0 && $data['actif']==0) 
  { 
    $valid = false; 
    $erreurid = 'Votre compte n\'est pas actif, consultez le mail envoyé pour l\'activer.'; 
  } 
  else 
  { 
    if($req->rowCount()>0 && $data['actif']==1) 
    { 
      $_SESSION['membre'] = $login; 
    } 
  } 
     
    $req->closeCursor(); 
    if($valid) 
    { 
      header('Location: profil.php'); 
    } 
   
  } 
} 
?>


Apparemment se serait une enccolade toujours au niveau de la fonction try{ mais je ne vois pas où ?????
Merci d'avance pour votre aide

9 réponses

moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
6 mars 2011 à 19:59
SAlut
Selon tes indications quand je lis
if($valid){
try{
$bdd = new PDO('mysql:host=dbmonhebergeur;dbname=ma_base', 'mon_nom_utilis', 'mon_pass') or die(print_r($bdd->errorInfo()));
$bdd->exec('SET NAMES utf8');
}
Il manque une accolade fermante déjà (celle du if). Il suffit de la mettre.
D'autre part qu'est ce que try() je n'ai pas trouvé à quoi cela correspond.
Je ne connais pas.
PHP5 ou 4 ?
0
Merci pour ton message
php5
c'est je crois ce qui permet d'insérer un champs dans la base de donnée
Ceci dit je en suis pas une experte
Mais je t'ai trouvé ce petit descriptif :
- Quand aucune erreur n'est levée, le bloc try est intégralement exécuté et le(s) catch(s) associé(s) est (sont)
ignoré(s).

- Si une erreur est levé, le bloc try est interrompu (les instructions après f sont ignorées) et l'on rentre dans le bloc catch qui correspond à l'erreur levé. Il est possible de faire un "catch" par défaut quand tous les catch du bloc try catch n'ont pas rattrapé l'erreur : celui ci est noté catch(...). 

Pour ce qui est de l'accolade, je dois la mettre où j'ai déjà tout essayé ou presque apparement :-) ?
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
6 mars 2011 à 20:11
Il faut fermer l'instruction If avec une accolade..
Je n'ai pas la réponse à la question votre texte contenant les caractères accentués tronqués sont ils stockés dans une base de données ? Ou bien est ce que le texte est écrit en dur dans le code PHP ?
0
stockés dans une base de donnée tous les textes du site le sont
Mais en créant cette partie admin (très simple) j'ai apparemment plus de soucis que de passer directement par la base de donnée
0
Ce n'est pas Exeption mais Exception
} catch(Exception $e) {
0
merci pour la réponse, j'ai effectué la modification mais... toujours erreur à cette ligne : try{
Je n'y comprends rien
est ce possible de changer cette fonction ?
Peut être que ça vient de mon hebergeur ?
0
Après vérification, il ne manque aucune accolade dans ton script :
<?php
session_start();
if(!empty($_SESSION['membre'])) {
	header('Location: index.php');
}

if(!empty($_POST)) {
	$valid = true;
	extract($_POST);

	if(empty($login)) {
		$valid = false;
		$erreurlogin = 'Indiquez votre login';
	}

	if(empty($pass)) {
		$valid = false;
		$erreurpass = 'Indiquez votre mot de passe';
	}
   
	if($valid) {
		try {
			$bdd = new PDO('mysql:host=dbmonhebergeur;dbname=ma_base', 'mon_nom_utilis', 'mon_pass') or die(print_r($bdd->errorInfo()));
			$bdd->exec('SET NAMES utf8');
		} catch(Exception $e) {
			die('Erreur:'.$e->getMessage());
		}

		$req = $bdd->prepare('SELECT * FROM membre WHERE login=:login AND pass=:pass');
		$req->execute(array('login'=>$login, 'pass'=>sha1($pass)));
		$data = $req->fetch();
		if($req->rowCount()==0) {
			$valid = false;
			$erreurid = 'Mauvais identifiants';
		}

		if($req->rowCount()>0 && $data['actif']==0) {
			$valid = false;
			$erreurid = 'Votre compte n\'est pas actif, consultez le mail envoyé pour l\'activer.';
		} else {
			if($req->rowCount()>0 && $data['actif']==1) {
				$_SESSION['membre'] = $login;
			}
		} 

		$req->closeCursor();
		if($valid) {
			header('Location: profil.php');
		}
	}
}
?>
0
eternity63 Messages postés 33 Date d'inscription dimanche 6 mars 2011 Statut Membre Dernière intervention 19 janvier 2018 1
6 mars 2011 à 22:03
Merci beaucoup pour votre réponse

alors pourquoi ce message d'erreur ?
mon hébergeur ?
0

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

Posez votre question
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
6 mars 2011 à 22:08
non il ne manque pas d'acolade : cela a été corrigé
if($valid) {
try {
$bdd = new PDO('mysql:host=dbmonhebergeur;dbname=ma_base', 'mon_nom_utilis', 'mon_pass') or die(print_r($bdd->errorInfo()));
$bdd->exec('SET NAMES utf8');
} catch(Exception $e) {
die('Erreur:'.$e->getMessage());
}
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
6 mars 2011 à 22:09
Et si Try est une fonction ce n'est pas accolade qu'il faut lui mettre c'est ()
0
eternity63 Messages postés 33 Date d'inscription dimanche 6 mars 2011 Statut Membre Dernière intervention 19 janvier 2018 1
6 mars 2011 à 22:14
si je modifie l'accolade par ()
message d'erreur :
Parse error: syntax error, unexpected T_VARIABLE in /homepages/31/d357858736/htdocs/signup/inscription.php on line 26
0
La structure try... catch suit cette syntaxe :
try { 
 //... 
} catch() { 
 //... 
}

Donc pas de parenthèses à try mais bien une accolade ouvrante et une fermante.
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
6 mars 2011 à 22:20
L'erreur se produit à la ligne 26 non plus à la 173.. c'est peu etre différent.
N'étant pas dans votre environnement je ne saurai pas débeuguer. C'est à vous de le faire malheureusement.
Faites les tests pas à pas.
0
eternity63 Messages postés 33 Date d'inscription dimanche 6 mars 2011 Statut Membre Dernière intervention 19 janvier 2018 1
6 mars 2011 à 22:23
non c'est juste une modification pour la connexion db qui fait que try{ bouge de 2 ou 3 ligne
mais je fais les tests au fur et à mesure que je reçois vos messages

et je vous en remercie tous d'ailleurs
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
Modifié par moderno31 le 6/03/2011 à 22:26
j'ai le sentiment qu'il y a 2 personnes sur la demande (2 comptes CCM) VAL et Eternity...
0
eternity63 Messages postés 33 Date d'inscription dimanche 6 mars 2011 Statut Membre Dernière intervention 19 janvier 2018 1
6 mars 2011 à 22:27
oui je viens de m'inscrire sur le forum et val ne passait pas en pseudo
0
eternity63 Messages postés 33 Date d'inscription dimanche 6 mars 2011 Statut Membre Dernière intervention 19 janvier 2018 1
6 mars 2011 à 22:24
ce que je ne comprends pas c'est pourquoi le serveur (Internet) m'envoie cette erreur s'il ne manque pas d'accolade ????? Ce n'est pas logique
0
eternity63 Messages postés 33 Date d'inscription dimanche 6 mars 2011 Statut Membre Dernière intervention 19 janvier 2018 1
7 mars 2011 à 12:59
Bonjour à tous et désolée de vous avoir donné du soucis avec ce script
Mon doute était bien fondé, ça venait bien de mon hébergeur :
Le seveur utilise par défaut php4 et le script est en php5


Donc voici la solution si quelqu'un à un soucis de script php5.
créer un fichier .htaccess (à la racine du site)
puis inclure cette fonction :
AddType x-mapp-php5 .php


Et le tour est joué !

Merci moderno31 et __construct pour votre aide elle m'a était précieuse, surtout de m'avoir confirmer qu'il n'y avait pas de problème d'accolade comme le spécifiait le serveur Internet. C'est ce qui m'a orienté
0