Script espace membres

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 : Script espace membres

par chrislabricole » 16 août 2007, 12:54

a ! merci sa marche !
voila mon code
if( isset($_SESSION['status']) && isset($_SESSION['mdp']) )
{

	if($_SESSION['status'] == 1)
	{
		if( $_SESSION['mdp'] != $modo_pass )
		{
		header('location:index.php');
		}
	}
	
	
	if($_SESSION['status'] == 2)
	{
		if( $_SESSION['mdp'] != $admin_pass )
		{
		header('location:index.php');
		}
	}
	
	
} else {
header('location:index.php');
}
et j'ai rajouté 2 condition parce-que si l'utilisateur se connecte en admin et qu'il met sont mdp admin, sa marche aussi donc ses 2 conditions sont la pour cela ;)

mais sinon, j'ai une erreur en bas de ma page :
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
EDIT : pff erreur de ma part, pardon :roll:


Merci de vos réponses ! ^^

par ouckileou » 16 août 2007, 12:08

if( $_SESSION['mdp'] != $modo_pass || $_SESSION['mdp'] != $admin_pass )
{
    header('index.php');
    exit();
} 
mais les 2 conditions sont 2 conditions indépendantes ! php, lui il li se qu'il y a entre les parenthèses if() puis si c'est faut il ignore le contenu entre les accolades....
Ben non, PHP exécutera ce qu'il y a dans les accolades si l'une OU l'autre des conditions sont fausses. Comme tu testes sur une même variable, et qu'une variable n'a qu'une seule valeur, alors il y aura tjrs une condition fausse.

Cas 1 :
$_SESSION['mdp'] == $modo_pass
Donc :
$_SESSION['mdp'] != $admin_pass
Donc :
Redirection

Cas 2 :
$_SESSION['mdp'] == $admin_pass
Donc :
$_SESSION['mdp'] != $modo_pass
Donc :
Redirection

Cas 3 :
$_SESSION['mdp'] == $nimportequoidautre
Donc :
$_SESSION['mdp'] != $modo_pass
Donc :
Redirection

Voilà ce que voulait dire Truc.

Au passage, quand on a des problèmes de redirection, c'est bien de tester en les désactivant et en mettant des echo de contrôle, pour voir dans quoi on passe, c'est plus simple.

par chrislabricole » 16 août 2007, 02:33

bah nan !
puisque si on dit que session[mdp] != de $modo_pass on redirige vers index.php
sa revient à dire si session[mdp] == que $modo_pass on reste sur logged.php

en fait, je fais ces 2 conditions pour traiter les mots de passes...

Comment une MEME variable peut-elle avoir deux valeurs différentes pour pouvoir passer ces deux tests ?
mais les 2 conditions sont 2 conditions indépendantes ! php, lui il li se qu'il y a entre les parenthèses if() puis si c'est faut il ignore le contenu entre les accolades....

Je te comprend pas trop se que tu veut dire par cette phrase :roll:

PS: et donc, si le mdp est bon, on reste sur logged.php sinon, on redirige vers index.php...
:)

par Truc » 16 août 2007, 01:54

et ça ne te semble pas bizarre ?

Comment une MEME variable peut-elle avoir deux valeurs différentes pour pouvoir passer ces deux tests ?

par chrislabricole » 16 août 2007, 01:48

édit:j'ai mal vu, dès que je vois des [] je coris que c'est un tag Résolu. Le tag [Problème] est pas vraiment utile, on se doute que tu en as un :P
D'ailleurs je le vire pour ces mêmes raisons :wink:
^^

alors, j'explique cela...
eum... tu a l'ancienne version du if....
    if( $_SESSION['mdp'] != $modo_pass )
    {
    header('location:index.php');
    exit();
    }
    
    if( $_SESSION['mdp'] != $admin_pass )
    {
    header('location:index.php');
    exit();
    } 
si session[mdp] est différent de $modo_pass (dans mdp.php) alors, je redirige vers index.php puis j'arrête l'exécution de la page...

si session[mdp] est différent de $admin_pass (dans mdp.php) alors, je redirige vers index.php puis j'arrête l'exécution de la page...

*******************************

code php mais en simplifié :
    if( SESSION[mdp] est différent de $modo_pass )
    {
    je redirige vers index.php
    je finalise l'exécution
    }
    
    if( SESSION[mdp] est différent de $admin_pass )
    {
    je redirige vers index.php
    je finalise l'exécution
    } 
Voilà....

par Truc » 16 août 2007, 01:33

édit:j'ai mal vu, dès que je vois des [] je coris que c'est un tag Résolu. Le tag [Problème] est pas vraiment utile, on se doute que tu en as un :P
D'ailleurs je le vire pour ces mêmes raisons :wink:
if( $_SESSION['mdp'] != $modo_pass || $_SESSION['mdp'] != $admin_pass )
{
    header('index.php');
    exit();
} 
Traduis ce bout de script en pseudo code (avec des mots en français) en expliquant ce qu'il est censé faire (ce code).
Si la variable "mdp" différente...

par chrislabricole » 16 août 2007, 01:17

ok, donc,
se qu'il se passe :
quand je me logge sur index.php, il me redirige vers logged.php, (si le mdp est bon), jusque là, pas de problème... mais logged.php me redirige vers index.php parce-que mon mdp (dans la session) n'est pas bon, alors qu'il est bon...

Se que je voudrais qu'il se passe :
normalement, il devrait rester sur logged.php (puisque mon mdp est bon)

par ouckileou » 16 août 2007, 00:55

Je lis très bien ton if(), ce que je comprends pas, c'est ce qu'il se passe, et ce qui ne va pas ?

Si j'ai bien suivi :
- tu es redirigé vers index.php
- tu veux être redirigé vers index.php

Alors où est le problème ? :shock:

Si tu es encore là, c'est que quelquechose ne marche pas, seulement tes messages sont incompréhensibles, et quand on te demande d'expliquer, tu explique des choses inutiles.

Peux-tu réexpliquer quel est le problème :
- CE QU'IL SE PASSE
- CE QUE TU VOUDRAIS QU'IL SE PASSE

Il vaut mieux expliquer le résultat souhaité, c'est plus facile pour t'aider

par chrislabricole » 16 août 2007, 00:26

lol

Je vais traduire ma condition qui permet de savoir si l'utilisateur est loggé (logged.php)
celle-çi :
<?php
session_start(); // on démarre la session
include('mdp.php'); // inclu le fichier des mdp

if( isset($_SESSION['status']) && isset($_SESSION['mdp']) )
{
    if( $_SESSION['mdp'] != $modo_pass )
    {
    header('location:index.php');
    exit();
    }
    
    if( $_SESSION['mdp'] != $admin_pass )
    {
    header('location:index.php');
    exit();
    }
    
} else {
header('location:index.php');
}
?>
si session[status] et que session[mdp] existe, et que si le mdp qu'il a entré est différent au mdp que l'on a dans mdp.php , alors je redirige vers index.php ... sinon (si session[mdp et session[status] n'existe pas) je redirige vers index.php
je ne comprend pas ! j'ai mis différent (!=) et pas égal ! (==)
je vais essayer de reformuler cette condition....

Merci d'votre aide ! ^^

par ouckileou » 15 août 2007, 18:37

je dit cela car si j'enlève le code qui permet de vérifier si l'utilisateur est identifier, bah logged.php marche, en revanche, si je le remet, ben ça ne marche plus, en fait, quand on s'identifie, sa nous redirige vers logged.php mais logged.php nous "reredirige" vers index.php, donc c'est pour cela que j'en conclu que c'est logged.php qui ne va pas bien.....
Je ne comprends rien à ton problème

Moi ça me parait normal que logged.php renvoie vers index.php, tu as 3 redirections vers la même page, quel que soit le cas :
header('location:index.php'); 
Alors, c'est bon ou pas ?
Ce que Zeus demandait, c'est que tu expliques ce que tu attends, et ce qu'il se passe exactement.

Et pourquoi ton sujet est-il marqué résolu ? Il l'est ou pas ?
édit:j'ai mal vu, dès que je vois des [] je coris que c'est un tag Résolu. Le tag [Problème] est pas vraiment utile, on se doute que tu en as un :P

par chrislabricole » 15 août 2007, 16:50

^^

je dit cela car si j'enlève le code qui permet de vérifier si l'utilisateur est identifier, bah logged.php marche, en revanche, si je le remet, ben ça ne marche plus, en fait, quand on s'identifie, sa nous redirige vers logged.php mais logged.php nous "reredirige" vers index.php, donc c'est pour cela que j'en conclu que c'est logged.php qui ne va pas bien.....

Thanks for your reply ^^ :D

par zeus » 15 août 2007, 14:37

Bon, tu as fait un effort sur l'orthographe et je t'en remercie :pouce:
Juste que "ça ne marche pas" au lieu de "sa ne marche pas" ;)

Sinon, "ça ne marche pas" ne nous aide pas :?
Qu'est-ce qui te fait dire ça ? page blanche, message d'erreur ?
Est-ce que tu as essayé de tracer l'évolution de ton algorithme pour vérifier qu'il fait bien ce que tu attends (des echo dans le code) ?

par chrislabricole » 15 août 2007, 14:22

Depuis, mes codes on bien changés
les revoilà, mais seulement, sa ne marche pas :cry:

index.php :
<?php
session_start();
include('mdp.php');

if( isset($_POST['mdp']) && isset($_POST['status']) )
{
	$mdp = $_POST['mdp'];
	$status = $_POST['status']; 
	$_SESSION['status'] = $status;
	$_SESSION['mdp'] = $mdp;
	
		if( $mdp == $modo_pass || $mdp == $admin_pass )
		{

		$_SESSION['status'] = $status;
		header('location:logged.php');
		} else {
		?>
		Mauvais mot de passe !
		<form method="post" action="index.php">
		<label for="status">Se connecter comme : <select name="status">
		<option value="1">Modérateur</option>
		<option value="2">Administrateur</option>
		</select>
		</label>
		<br />
		<label for="mdp">Mot de passe : <input type="password" name="mdp" />
		</label>
		<br />
		<input type="submit" value="Se connecter" />
		</form>	
		<?php
		}
}
else
{
?>
<form method="post" action="index.php">
<label for="status">Se connecter comme : <select name="status">
<option value="1">Modérateur</option>
<option value="2">Administrateur</option>
</select>
</label>
<br />
<label for="mdp">Mot de passe : <input type="password" name="mdp" />
</label>
<br />
 <input type="submit" value="Se connecter" />
</form>
<?php
}
?>
mdp.php :
<?php
$admin_pass = "admin"; // Mot de Passe de l'administrateur
$modo_pass = "modo"; // Mot de Passe du modérateur
?>
logged.php :
<?php
session_start(); // on démarre la session
include('mdp.php'); // inclu le fichier des mdp

if( isset($_SESSION['status']) && isset($_SESSION['mdp']) )
{
	if( $_SESSION['mdp'] != $modo_pass )
	{
	header('location:index.php');
	exit();
	}
	
	if( $_SESSION['mdp'] != $admin_pass )
	{
	header('location:index.php');
	exit();
	}
	
} else {
header('location:index.php');
}

?>
à mon avis, je pense (pas sûr) que c'est logged.php qui a un problème, mais je suis pas sûr.... :roll:

Merci de votre aide :D

par zeus » 14 août 2007, 08:00

en fait, avant que je ne mette
...
Quand je me loggais, ça restais toujours sur la même page mais elle devenait blanche, maintenant que j'ai mis
...
, ça reste toujours sur la même page sauf que cette fois ci, il y a le formulaire... normalement, il devrait nous rediriger vers logged.php
...
On est pas sur skyblog ni sur myspace ... 2ème avertissement en 3 message :evil:

Prochaine intervention, je clôture le sujet

par chrislabricole » 14 août 2007, 01:57

en fait, avant que je mette
header('location: xxx.php');
au lieu de :
header('xxx.php');
oui, j'me suis trompé :oops:
ben quand je me loggé, sa rester toujours sur la même page mais elle devenais blanche, maintenant que j'ai mi
header('location: xxx.php');
au lieu de
header('xxx.php');
, sa reste toujours sur la même page sauf que cette fois si, il y a le formulaire... normalement, il devrait nous rediriger ver logged.php
je ne comprend pas mon erreur....

Merci de votre aide


:)