sebing
Messages postés144Date d'inscriptionmercredi 3 février 2010StatutMembreDernière intervention 3 novembre 2010
-
28 avril 2009 à 22:26
jreaux62
Messages postés195Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention24 octobre 2011
-
1 mai 2009 à 16:12
Bonjour,
J'ai trouvé un script pour faire un espace membre, mais j'aimerai que celui aprés authentification m'ouvre une page.
Voici le script:
//on appel les fonctions permettant la connection a la BDD
require_once("_admin/inc_func.php"); //chemin ou se trouve les includes des fonctions
//on vérifie si les éléments de l'identification on été transmis
if (!isset($_POST["login"]) && !isset($_POST["mdp"])){
echo "ERREUR : les paramètres d'indentification n'ont pas été transmis, veuillez réessayer de vous identifier.";
exit;
}
//on vérifie si les 2 champs on bien été rempli
if (empty($_POST["login"]) || empty($_POST["mdp"])){
echo "ERREUR : l'un des champs du formulaires n'a pas été rempli, veuillez remplir les 2 champs s'il vous plais.";
exit;
}
$connexion= connexion(USER,PASS,SERVER);
//on regarde a qui appartient le login
$req="select ".PREFIX."mdp from ".PREFIX."login where ".PREFIX."login="".$_POST["login"]."";";
//on regarde a quel groupe d'utilisateur appartient le login
//et une fois que l'on sait a quel groupe il appartient on vérifie le mot de passe
if (nbligne($req)==1){
$curseur=execreq($req,$connexion);
$data=mysql_fetch_array($curseur);
if (!(md5($_POST["mdp"])==$data[PREFIX."mdp"])){
echo " ERREUR : votre mot de passe est éronné.";
exit;
}
}else{
echo "ERREUR: vous n'êtes pas inscrit sur le site.";
exit;
}
//on démarre une session et on y inscrit les variables de session correspondant a l'utilisateur
jreaux62
Messages postés195Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention24 octobre 201132 29 avril 2009 à 03:31
Bonjour,
"headers already sent" : NE PAS METTRE DE CODE HTML (echo ..., balises, ... espace) avant un header(location ...) ou un session_start.
DONC :
Page verification.php :
<?php
$messageerreur = '';
//on appel les fonctions permettant la connection a la BDD
require_once("_admin/inc_func.php"); //chemin ou se trouve les includes des fonctions
//on vérifie si les éléments de l'identification on été transmis
if (!isset($_POST["login"]) && !isset($_POST["mdp"])){
$messageerreur .= " ERREUR : les paramètres d'indentification n'ont pas été transmis, veuillez réessayer de vous identifier.";
header('Location: identification.php');
exit;
}
//on vérifie si les 2 champs on bien été rempli
if (empty($_POST["login"]) || empty($_POST["mdp"])){
$messageerreur . = "ERREUR : l'un des champs du formulaires n'a pas été rempli, veuillez remplir les 2 champs s'il vous plait.";
header('Location: identification.php');
exit;
}
$connexion= connexion(USER,PASS,SERVER);
//on regarde a qui appartient le login
$req="select ".PREFIX."mdp from ".PREFIX."login where ".PREFIX."login="".$_POST["login"]."";";
//on regarde a quel groupe d'utilisateur appartient le login
//et une fois que l'on sait a quel groupe il appartient on vérifie le mot de passe
if (nbligne($req)==1){
$curseur=execreq($req,$connexion);
$data=mysql_fetch_array($curseur);
if (!(md5($_POST["mdp"])==$data[PREFIX."mdp"])){
$messageerreur .= " ERREUR : votre mot de passe est éronné.";
header('Location: identification.php');
exit;
}
}else{
$messageerreur . = "ERREUR: vous n'êtes pas inscrit sur le site.";
exit;
}
//on démarre une session et on y inscrit les variables de session correspondant a l'utilisateur
$_SESSION['login']= $_POST["login"];
$_SESSION['identification']="ok";
header('Location: http://amk78.free.fr/'); ?>
Et dans la page identification.php :
<html>
.....
<form method ="post" action="verification.php">
.......... (formulaire d identification : login et mdp)
</form>
<?php
// affichage du message d'erreur eventuel apres soumission
echo @$messageerreur; ?>
sebing
Messages postés144Date d'inscriptionmercredi 3 février 2010StatutMembreDernière intervention 3 novembre 2010 28 avril 2009 à 23:09
Le message d'erreur était le suivant:
Warning: Cannot modify header information - headers already sent
by (output started at
/mnt/102/sda/5/7/xxx/espace_membres/identification_valid.php:8) in /mnt/102/sda/5/7/xxx/espace_membres/identification_valid.php on line 56
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 30 avril 2009 à 08:37
Tout fonctionne correctement.
=>
Je ne sais pas trop comment tu as modifié le script mais il y a des choses qui ne peuvent pas fonctionner :
Tous les $messageerreur ne servent à rien et ne seront jamais affiché
$_SESSION['login']=$_POST["login"];
$_SESSION['identification']="ok";
header('Location: http://amk78.free.fr/'); =>
La session n'étant pas démarrée les 2 premières lignes ne servent à rien. Si tu mets un session_start avant le header plantera.
En fait je pense que tu pourrais faire bien plus simple.
sebing
Messages postés144Date d'inscriptionmercredi 3 février 2010StatutMembreDernière intervention 3 novembre 2010 30 avril 2009 à 14:46
Bonjour Kohntar,
Si j'enlève $messageerreur, la requête ne marche pas., jreaux62 peux tu m'expliquer à quoi sert $messageerreur.
Que me conseils tu Kohntar?
Merci de vos aides, j'ai pas fini aprés je vais essayer de faire des redirections par rapport à des groupes (c'est pas gagné!!!)
jreaux62
Messages postés195Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention24 octobre 201132 1 mai 2009 à 11:50
Bonjour,
je me suis contenté de restructurer ton code (mais sans chercher a l'optimiser)
Je répète :
NE PAS METTRE DE CODE HTML (affichage d'echo ..., balises, ... espace) avant un header(location ...) Donc :
- comme tu veux faire des redirection, toutes cette portion de code PHP doit se faire imperativement AVANT tout affichage html, donc avant la balise <html> .....
- comme dans ce traitement, tu souhaites pouvoir afficher des messages d'erreur, j'ai mis cette variable $messageerreur pour "stocker" les messages, et pouvoir APRES les afficher dans le code html.
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 1 mai 2009 à 12:39
- comme dans ce traitement, tu souhaites pouvoir afficher des messages
d'erreur, j'ai mis cette variable $messageerreur pour "stocker" les
messages, et pouvoir APRES les afficher dans le code html.
=> J'ai peut être loupé quelque chose mais je ne vois pas comment $messageerreur pourrait être affichée sur une autre page appelée par un header.
-> cette variable sera toujours vide (ou plus exactement non définie)
jreaux62
Messages postés195Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention24 octobre 201132 1 mai 2009 à 15:59
@Kohntark :
$messageerreur est ici prévu pour être affiché dans la MEME page (formulaire et traitement sur la meme page)
En effet, si l'affichage d'un message d'erreur est prévu pour être affiché dans une AUTRE page (après une redirection, par exemple), on doit utiliser une variable "transportable", par exemple :
- SESSION['messageerreur'] = $messageerreur;
- ou dans la redirection :
header('location : lapage.php?messageerreur=$messageerreur')
jreaux62
Messages postés195Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention24 octobre 201132 1 mai 2009 à 16:12
@Kohntark :
je viens de relire le message où j'ai mis le code "corrigé"
Je n'avais en effet pas fait attention qu'il y avait 2 pages différentes !
Mea Culpa, tu as eu parfaitement raison de me reprendre.