8792 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je suis en train de réaliser un site web, et je fais la partie d'administration...

Dans le repertoire d'administration, se trouvent connexion.php, error_connexion.php, index.php et protection.php.

Ici, on ne s'interressera que de index.php, protection.php et error_connexion.php.

Je vous explique mon problème :

Dans la page index.php, j'inclue protection.php :

Include
<?php
include("protection.php");
?>


protection.php

<?php
	if(isset($_POST['mdp']))
	{
		$login=$_POST['login'];
		$mdp=$_POST['mdp'];
	}
	else
	{
		$login="";
		$mdp="";
	}
	if($mdp=="xxx" AND $login=="xxx" OR $mdp=="xxx" AND $login=="xxx")
	{
?>


ensuite du code HTML, et ensuite :

<?php
   }
      else
   {
      include("error_connexion.php");
   }
?>


Là, la page index.php m'indique une erreur telle que :

Parse error: syntax error, unexpected '}' in /mnt/128/sdb/0/3/xxxx/Admin/index.php on line 53


Et j'aurais besoin de votre aide pour résoudre mon problème car je ne vois pas d'où ça vient...

Merci de m'avoir lu Smiley smile
Bonjour FlorentG,

Je te schématise le code :


21	<div id="contenu">
22		<?php
23			include("protection.php");
24		?>
25    Code HTML
...
52		<?php
53			}
54	 		  else
55			{
56			  include("error_connexion.php");
57			}
58		?>


Voila, j'espere que ça te seras util.
En fait ça ne peut pas fonctionner comme ça, tu ne peux pas avoir un morceaux d'if dans un fichier, et le else dans l'autre
Modifié par FlorentG (15 Oct 2006 - 15:10)
Merci Smiley smile Donc, comment puis-je procéder ? Il n'est pas possible d'inclure ma protection.php afin que je ne sois pas obligé de retapé le code à chaque fois ?
Modifié par Nexx_ (15 Oct 2006 - 15:11)
Salut Nexx Smiley cligne ,

Tu devrais t'en sortir en remplaçant protection.php par
<?php
	if(isset($_POST['mdp']))
	{
		$login=$_POST['login'];
		$mdp=$_POST['mdp'];
	}
	else
	{
		$login="";
		$mdp="";
	}

	if(($mdp!="xxx" AND $mdp!="xxx") OR ($login!="xxx" AND $login!="xxx"))
	{
		include("error_connexion.php");
		die();
	}
?>
suivi de ton code HTML.

Je t'invites tout de même à regarder si l'utilisation de variables de sessions ne serait pas plus "propre" pour gérer ta problématique Smiley biggrin Un exemple ici.

@+
FlorentG a écrit :
En fait ça ne peut pas fonctionner comme ça, tu ne peux pas avoir un morceaux d'if dans un fichier, et le else dans l'autre



Euh ... sans etre un expert , je crois bien que si ... je l'ai deja fait !

A condition que le Else soit apeler systematiquement, sinon effectivement y aura un souci puisque il ne s'affichera pas si la condition est remplie , en bref c'est possible si tu prevoie tous les cas de figure.

PS: Je vais poster un script rapide pour l'aider
Voici ma version pour la securité des page admin :

avant de securisé une partie tu insert la ligne suivante :
<?php
if ( isset ( $_SESSION['admin'] ) ) {
?>



Tu insert tout ton code html voir mem PHP puis tu rajoute ensuite :
<?php
}else{
include('login.php');
}
?>



Tu aura donc besoin du fichier login.php comme tu peut le constater et le voici donc :



<?php		
					
if ( isset( $_POST['submit_log'] ) ) {
$pseudo_log =  $_POST['pseudo_log'];
$pass =  $_POST['pass'];
		
		if ( isset ( $_POST['pseudo_log'] ) and isset ( $_POST['pass'] )  and !empty( $_POST['pseudo_log'] ) and !empty( $_POST['pass'] )) {
				if ( $pseudo_log == "ton_login" ) {

						if ( $pass == "ton_pass" ) {
							$_SESSION['admin'] = strtolower($pseudo_log);
							echo'<script language="JavaScript">window.location="index.php"</script>';

						}else{
						echo '<div class="eror" align="center">Mot de pass incorrect </div><br>';
						}
				}else{
				echo '<div class="eror" align="center">Login incorrect </div><br>';
				}
						
		}
}


if ( isset ( $_SESSION['admin'] ) ) {
     echo '<div align="center">Bienvenue&nbsp;'.$_SESSION['admin'].'<br></div>';
}
else
{
?>
<h1>Connexion <span>Administrateur</span></h1>
<div class="padding">
<form method="post" action="">

<label>Login</label> <input type="text" name="pseudo_log" /><br /><br />
<label>Mot de pass</label> <input type="password" name="pass" /> <br /><br />
<input type="submit" value="Connexion" name="submit_log" onclick="this.value='Veuillez patienter...'">
</form></div>
<?php
}
?>						


J'ai donné ici mon code adapté a ta situation il se peut donc que j'ai fait une petite erreur mais je crois pas , si ca marche pas je suis dispo Smiley ravi

[b]modif: j'avais une grosse erreur j'ai corrigé ca a : 21:37 [/b]
Modifié par jarodxxx (19 Oct 2006 - 22:05)
Hello jarodxxx Smiley cligne ,

Le code que tu mets fonctionne effectivement mais ce qui ne marche pas c'est de mettre le premier if dans un include : si par exemple tu as

page.php
<?php
include('test_admin.php');
?>

Du code HTML...

<?php
}else{
include('login.php');
}
?>

et test_admin.php
<?php
if ( isset ( $_SESSION['admin'] ) ) {
?>

ça ne marche plus. Même si je ne sais pas pourquoi Smiley rolleyes

@+
Modifié par Heyoan (20 Oct 2006 - 09:06)
Vikchill a écrit :
En mettant require à la place de include ça fait pareil?

Oui : je viens d'essayer avec require et readfile et même résultat.
justement les codes etant equivalent en longeur, inutile de passer par un include ! !

si le code etait long ..ok , mais la c inutile , donc le code tel que je l'ai donné fonctionne , et effectivement on n'utilisera pas d'include (qui serait inutil en plus )
Smiley biggrin
Vikchill a écrit :
En mettant require à la place de include ça fait pareil?

Require et Include sont pareils, la seule différence est que le premier lance une erreur fatale si le fichier n'existe pas (bloquant l'exécution du script), include lui ne lance qu'un warning.

D'ailleurs, dans 99.9% des cas, c'est de require qu'on a besoin, parce que si le fichier venait à disparaître, il vaut mieux arrêter l'exécution que de continuer