if...include

Petit nouveau ! | 9 Messages

28 sept. 2010, 15:52

Bonjour
J'ai crée 4 pages : connexion.php inscription.php membre.php et deconnexion.php.

Mon probléme est le suivant : j'aimerais que toutes les pages apparaissent aux même endroit.

Exemple je me connecte = alors le formulaire de connexion disparait et le code de la page membre.php apparait a la place.

Je pense que cela se traduira pas un if... include.

Merci d'avance.

ViPHP
xTG
ViPHP | 7331 Messages

28 sept. 2010, 16:17

Exactement, une série de if-else ou bien un switch-case.

Petit nouveau ! | 9 Messages

28 sept. 2010, 16:21

Le probléme est que je ne sais pas comment écrire mon code if-else avec les includes...

Eléphanteau du PHP | 12 Messages

28 sept. 2010, 16:33

En fait tu peux utiliser un controleur qui gère ton affichage mais aussi faire cela directement par un switch suivant l'état de ta connexion.

Exemple : disons que
$authentification = 0 // non connecté
$authentification = 1 // connecté
$authentification = 2 // inscription
$authentification = 3 // déconnexion
switch ($authentification) {
case 0: include ("connexion.php");break;
case 1: include ("membre.php");break;
case 2: include ("inscription.php");break;
case 3: include ("deconnexion.php");break;
default: break;
}

Petit nouveau ! | 9 Messages

28 sept. 2010, 17:36

J'ai juste à mettre ça dans mon code dans la bonne div ?
switch ($authentification) {
case 0: include ("connexion.php");break;
case 1: include ("membre.php");break;
case 2: include ("inscription.php");break;
case 3: include ("deconnexion.php");break;
default: break;
}

Eléphanteau du PHP | 12 Messages

28 sept. 2010, 18:05

Bah tu gère comment l'état de connexion ? en variable globale ou en session ?
Dans mon exemple c'est $authentification qui sert à cela. Dans ton cas, je sais pas comment c'est fait donc non tu ne peux pas appliquer cela en l'état mais avec une autre variable que $authentification

Petit nouveau ! | 9 Messages

28 sept. 2010, 18:34

Je gére en session !

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

		$base = mysql_connect ('*****.1and1.fr', '*******', '********');
		mysql_select_db ('******', $base);

		$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
		$data = mysql_fetch_array($req);

		mysql_free_result($req);
		mysql_close();

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

		elseif ($data[0] == 0) {
			$erreur = 'Compte non reconnu.';
		}

		else {
			$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
		}
	}
	else {
		$erreur = 'Au moins un des champs est vide.';
	}
}
?>


ça c'est ma page membre :
<?php
session_start();
if (!isset($_SESSION['login'])) {
	header ('Location: connexion.php');
	exit();
}
?>

<html>
<head>
<title>Espace membre</title>
</head>
<body>
<div id="connexion">
	<span>
		Bienvenue<?php echo htmlentities(trim($_SESSION['login'])); ?>!<br /><br>
		<a href="deconnexion.php">Déconnexion</a>
	</span>
</div>	
</body>
</html>

Petit nouveau ! | 9 Messages

29 sept. 2010, 12:56

up 8-|

Mammouth du PHP | 19672 Messages

29 sept. 2010, 13:10

Sobs, soit dit sans aucunement vouloir être désagréable : le UP ne sert à rien et le précédent message nous montre pas mal de code sans la moindre explication.

Pour pouvoir t'apporter une aide quelconque, n'oublie pas qu'on doit pouvoir comprendre quels sont tes raisonnements logiques, par quelles étapes tu passes pour obtenir le résultat souhaité, pas juste ton code source.

Encore une fois, et je crois qu'on ne le répètera jamais assez, la programmation, c'est de la logique pure. La machine ne comprend strictement rien, elle exécute des instructions telles qu'elles lui sont données. La machine ne fait pas d'erreur, les erreurs sont dans les instructions. Donc, si tu n'obtiens pas le résultat attendu, c'est qu'au moins une des instruction est erronée ou manquante.

Je n'ai pas regardé le sujet traité ici, mais quel qu'il soit, c'est toujours un problème de logique basé sur ta compréhension du fonctionnement général de ton application. Tente de te représenter les situation successives à partir de la réception par le serveur de la demande d'une page jusqu'à l'affichage du résultat : quels paramètres sont reçus, quelle page est demandée, et à chaque situation, vérifie si les éléments sont bien ceux qui devraient être pour la situation en question.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: