pb redirection espace membre

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 : pb redirection espace membre

Re: pb redirection espace membre

par AB » 25 mai 2010, 21:41

plus maintenant apparemment :( http://www.php.net/manual/fr/function.m ... .php#97520
pour mysqli encore pire faut éteindre le processid, d'ailleurs le paramètre optionnel du mysql_close devenait obligatoire sous 5.3, mais bon y'a pas trop d'info officiel la dessus, uniquement des constatations :|
Je viens de regarder ton lien mais apparemment ça ne concerne que windows ? Donc bon...

Sinon perso j'utilise mysqli sans fermer la connexion et pas constaté de différence avec mysql dans les mêmes conditions.

Donc tant que ça roule... mais je prend note de ta remarque au cas où :wink:

Et aussi je me dis que ça pouvoir se gérer au niveau de l'administration serveur, donc z'ont qu'à faire leur boulot :-*

Re: pb redirection espace membre

par stealth35 » 25 mai 2010, 21:14

merci ça à l'air de fonctionner. j'ai simplement enlevé les tous les mysql_close(). à quoi elle sert cette ligne concrètement???
ENCORE MERCI =D>
Comme son nom l'indique, elle sert à fermer la connexion à la base de données. Mais si tu as d'autres connexions à ouvrir derrière, ça risque de poser de gros soucis. Et de toutes façons comme la connexion est automatiquement fermée à la fin du traitement en cours (même sans l'utilisation de cette fonction), on a pas besoin.

Donc si vraiment tu tiens à l'utiliser, il faut faire attention en cas de scripts qui s'appellent successivement, que seul le dernier l'emploie :)

plus maintenant apparemment :( http://www.php.net/manual/fr/function.m ... .php#97520
pour mysqli encore pire faut éteindre le processid, d'ailleurs le paramètre optionnel du mysql_close devenait obligatoire sous 5.3, mais bon y'a pas trop d'info officiel la dessus, uniquement des constatations :|

Re: pb redirection espace membre

par AB » 25 mai 2010, 21:05

merci ça à l'air de fonctionner. j'ai simplement enlevé les tous les mysql_close(). à quoi elle sert cette ligne concrètement???
ENCORE MERCI =D>
Comme son nom l'indique, elle sert à fermer la connexion à la base de données. Mais si tu as d'autres connexions à ouvrir derrière, ça risque de poser de gros soucis. Et de toutes façons comme la connexion est automatiquement fermée à la fin du traitement en cours (même sans l'utilisation de cette fonction), on a pas besoin.

Donc si vraiment tu tiens à l'utiliser, il faut faire attention en cas de scripts qui s'appellent successivement, que seul le dernier l'emploie :)

Re: pb redirection espace membre

par jimix » 25 mai 2010, 19:11

merci ça à l'air de fonctionner. j'ai simplement enlevé les tous les mysql_close(). à quoi elle sert cette ligne concrètement???
ENCORE MERCI =D>

Re: pb redirection espace membre

par AB » 25 mai 2010, 04:07

Ben voilà maintenant t'es fixé, ca vient bien de la connexion... Ce que je veux dire c'est que ce n'est pas trop la peine de regarder le code qui suit puisque l'erreur est avant.

IL n'y a pas d'autre code avant ce que tu nous montre ? Sinon regarde si mysql est bien activé, essais de le redémarrer.
ou établie une connexion (réussie) dans une page vierge et essais de refaire le même code, tu verras bien là où ça coince.

C'est vraiment étonnant que tu arrives à faire fonctionner d'autres requêtes dans d'autres script sur ce même serveur.

Ou alors si tu as une autre connexion dans une autre page qui appelle ce script enlèves (ou mets en commentaires) tous les mysql_close() du script (et même de tous les scripts) pour voir ce que ça donne. D'ailleurs on n'en a pas besoin de cette fonction et je me souviens avoir eu des problèmes en l'utilisant dans certains contextes.

A part ça j'ai plus d'idées :|

Re: pb redirection espace membre

par jimix » 24 mai 2010, 22:43

ça donne la même chose... :roll:

Re: pb redirection espace membre

par AB » 24 mai 2010, 16:02

Sinon dans ton premier script si à la place de
$base = mysql_connect ('localhost', 'root', '');
tu fais
$base = mysql_connect ('localhost', 'root', '') or die (mysql_error());


ça donne quoi ?

Re: pb redirection espace membre

par AB » 24 mai 2010, 15:48

Pas mieux, y'a pas de faute dans cette page qui pourrait être à l'origine des messages d'erreur que tu nous as cité :?

Re: pb redirection espace membre

par jimix » 24 mai 2010, 15:32

je pense que mon pb viens peut-être de la page de destination "membre".
ci-dessous son code. qu'en pensez-vous?
<?php
session_start();
if (!isset($_SESSION['login'])) {
	header ('Location: index.php');
	exit();
}
?>

<html>
<head>
<title>Espace membre</title>
</head>

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

Re: pb redirection espace membre

par AB » 24 mai 2010, 14:31

Ben je vois toujours pas mieux. ça doit venir de ta connexion à la bdd peut-être. Mais ça m'étonnerais que ces message s'affichent suite au script de vérification lui-même :-k

Re: pb redirection espace membre

par jimix » 24 mai 2010, 13:37

l'autre page permet de s'inscrire et cela fonctionne bien. cela peut venir d'ou alors?
PAR AVANCE MERC

Re: pb redirection espace membre

par AB » 24 mai 2010, 13:14

Ben apparemment les messages d'erreur ne son pas générés par ton script. ça doit certainement venir d'ailleurs.
Les requêtes fonctionnent-elles correctement dans tes autres pages ?

Sinon juste pour la forme il est inutile de faire
if(isset($_POST['login']) && !empty($_POST['login']))
Car si la condition !empty($var) est remplie alors isset($var) le sera nécessairement. Donc c'est redondant et ne sert à rien.
La ligne
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])))
peut donc être avantageusement remplacée par
if ( !empty($_POST['login']) &&  !empty($_POST['pass']))
Plus lisible, plus simple, plus rapide, plus efficace :wink:

Re: pb redirection espace membre

par jimix » 24 mai 2010, 11:42

ok désolé
<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
	if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

$base = mysql_connect ('localhost', 'root', ''); 
       mysql_select_db ('espace', $base); 


		// on teste si une entrée de la base contient ce couple login / pass
		$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();

		// si on obtient une réponse, alors l'utilisateur est un membre
		if ($data[0] == 1) {
			session_start();
			$_SESSION['login'] = $_POST['login'];
			header('Location: inscription.php');
			exit();
		}
		// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
		elseif ($data[0] == 0) {
			$erreur = 'Compte non reconnu.';
		}
		// sinon, alors la, il y a un gros problème :)
		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.';
	}
}
?>
<html>
<head>
<title>Accueil</title>
</head>

<body>
Connexion à l'espace membre :<br />
<form action="index.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>

Re: pb redirection espace membre

par Ryle » 24 mai 2010, 11:39

Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

pb redirection espace membre

par jimix » 24 mai 2010, 11:14

bonjour,
voilà j'ai un petit pb de redirection ou d'identification pour un membre déjà enregistré. le membre s'enregistre bien mais une fois créé pas de possibilité d'aller sur le compte. pour info, le code à été tiré sur le site php facile.


lorsque le membre rentre son login et mot de passe (qui est bien présente dans la bdd) il me renvoi sur une page d'erreur de chargement.

Connexion interrompue

La connexion avec le serveur a été réinitialisée pendant le chargement de la page.

La liaison au réseau a été interrompue pendant la négociation d'une connexion. Veuillez réessayer.




voici le code utilisé, si vous avez une idée par avance merci
<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('espace', $base);


// on teste si une entrée de la base contient ce couple login / pass
$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();

// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: inscription.php');
exit();
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = 'Compte non reconnu.';
}
// sinon, alors la, il y a un gros problème :)
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.';
}
}
?>
<html>
<head>
<title>Accueil</title>
</head>

<body>
Connexion à l'espace membre :<br />
<form action="index.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>