thanae19
Messages postés30Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention 1 août 2005
-
8 avril 2005 à 13:32
yyyx
Messages postés24Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention11 juillet 2009
-
30 juil. 2005 à 11:53
Bonjour à tous,
Voila j'ai eu sousci, j'ai une page PHP avec ouverture de session après un login. Après je fait une redirection avec un header("location: page2.php").
Quand je teste sur ma machine où j'ai Easyphp 1.7 ca marche sans
probleme, mais maintenant que je l'ai mis sur mon hebergeur (Lycos
payant), ca marche plus.
J'ai teste avec des messages, les sessions fonctionnent, mais ca s'arrete au Header.
Est-ce que quelqu'un sais ce qui ne va pas, car ca sert à rien de
demander au helpdesk Lycos ils sont null, j'ai déjà demande un jour
pour une bete question sur une connexion MySql et ils n'ont rien
répondu de concret et intelligent.
thanae19
Messages postés30Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention 1 août 2005 8 avril 2005 à 19:57
Merci de l'idée, j'ai essayé mais toujours rien de changé. De plus j'ai
ete voir la doc et il indique bien que la bufferisation de sortie ne
concerne ni les sessions ni les cookies.
thanae19
Messages postés30Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention 1 août 2005 8 avril 2005 à 23:03
Oui les sessions fonctionnent, mais pas la redirection!
la version du serveur PHP est 4.3.10.
Mon code le voici:
<?php
if (isset($_REQUEST["username"])) {//si le formulaire est bien rempli
$cnct =
mysql_connect("serveur", "base", "psswrd")//connexion à MySql
or die ("Connexion
impossible!");
$dbcnct =
mysql_select_db("base")//connexion à la base
or die ("Connexion à la base
impossible!");
$pseudo = $_REQUEST["username"];
$password =
$_REQUEST["password"];
$ok =
mysql_db_query("base","select table.username, table.password
FROM table");//creation de la table en sql
if ($ok) {//si la table n'est pas vide
while ($row =
mysql_fetch_object($ok)) {//attribution de la table dans une chaine
if($password $row->password && $pseudo $row->username){//verifie si le login est bon
$_SESSION['login'] = md5("xxxxxx"); // creation
d'une variable cryptee de session
session_start();//ouverture d'une session
header("location : frames.php");
exit();
}else{
session_unset(); // suppression des variables de sessions
session_destroy(); // destruction de la session
echo "<tr><td colspan='2'
align='center'>Login ou mot de passe erroné</td></tr>";
}
}
}else{
session_unset(); //
suppression des variables de sessions
session_destroy(); //
destruction de la session
echo
"<tr><td colspan='2' align='center'>Connexion à la base
impossible</td></tr>";
}
}else{
echo "//creation du formulaire
<tr valign='middle'
height='600'>
<form action='page.php' method='post'/>
<table width='474' height='146' border='1'>
----, Authentification</td>
----
Login,
,
----
,
----
Password,
,
----
</form>
</td>
</tr></table>";
}
echo "";//fermeture des balises html
?>
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
Si j'insert un echo juste après la ligne session_start() il me l'affiche bien, mais plus rien après. De meme quand je teste avec un if (session_start()) {echo "session ouverte";}ca s'affiche bien, donc la session est bien ouverte mais la redirection ne se fait pas.
tucsoufle
Messages postés1250Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention30 septembre 20071 9 avril 2005 à 11:45
oui, ben je vois pas trop le probleme
et si tu essaye sans tout ce qui est session, c'est à dire tu supprime
le maximum possible en ne laissant que la redirection pour voir si elle
se fait bien
si elle se fait bien, tu rajoute les elements un par un ensuite, il n'y
a que comme ça que tu peut faire parceque je ne voit pas trop !
Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
yyyx
Messages postés24Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention11 juillet 2009 26 juin 2005 à 21:02
Bonjour,
J'ai à peu près le même problème :
je fais un include () sur une page vérifiant l'identification de l'utilisateur via une session et s'il n'est pas connecté, je voudrais redirriger via un header (pas avec un méta ou javascript car il y a possibilité d'arrêter l'exécution du code et c'est ici la protection de la zone d'administration...).
Le problème c'est que j'ai une erreur (header already sent).
Je me suis renseigné et ai lu que l'on devait envoyer le header avant session_start() mais dans ce cas la, je ne vérifie plus la connexion et c'est le casse tête...
Si vous connaissez la solution, merci de me répondre.
thomas68500
Messages postés9Date d'inscriptionsamedi 26 avril 2003StatutMembreDernière intervention24 novembre 2008 14 juil. 2005 à 14:08
Moi personnelement je suis chez lycos ont est le 14 juilet et quand je cree une session elle s'efface apres la deusieme page ou il est afficher j'ai regarder mon code est nikel et sa marche pas merci lycos et la mise a jour du serveur qui marche pas !!!
yyyx
Messages postés24Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention11 juillet 2009 30 juil. 2005 à 11:53
En fait, voila la solution,
E temps normal, on doit mettre le code dans cet ordre :
1) les différents header()
2) session_start();
3) l'affichage (echo, print, ...)
On doit faire ça car sinon, le navigateur mélange tout quand on lui parle de header puis de session par exemple.
Mais il y a der cas ou on a besoin de la session pour faire ou non une redirection, et là, tout est mélangé.
Heureusement, php gère la bufférisation de sortie en mettant tout en haut de code :
ob_start ();
et en dernier :
ob_end_flush()
Ce qui va tout remettre en ordre, et sa MARCHE!!