|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre chevronné
![]() Farid Inscription : janvier 2008 Messages : 368 ![]() |
Bonjour à tous,
je suis entrain de faire un site et j'aimerai limiter l'accés aux seuls membres inscrit. J'ai un index.php avec un formulaire et je voudrai rediriger les personnes qui essai d'accéder aux autres pas sur cette index sauf si ces personnes ce sont déja connecté. Si l'identification via le formulaire est correcte, j'aimerai rediriger l'utilisateur sur la page d'accueil du site. Pour l'instant j'ai ça : index.php Code PHP :
identification.php Code PHP :
config.php contient seulement les constantes utilises pour la connexion à la bas de données. Mon problème c'est que je ne peux pas faire de redirection avec header, pourtant je n'ai pas de html, echo et autre avant cette fonction. Comment pourrai-je faire sans utiliser .htaccess? Merci. |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Développeur PHP & Architecte logiciel Inscription : mars 2003 Messages : 562 ![]() |
Tu ne peux pas faire de redirection avec header. COmment ça ?
Si tu as du HTML dans ton code. Par exemple : Tu as un espace blanc après ton ?>, c'est le genre de chose qui bloque un header(). Essaye d'enlever toutes les balises de fin de script des tous tes fichiers Sinon, tu peux
__________________
Zend PHP Certified Engineer tutoriels : tutos PHP, Web & SEO blog : blog.lepine.pro membre de l'AFUP (Association des Utilisateurs de PHP) |
|
00
|
|
|
#3 |
|
Membre chevronné
![]() Farid Inscription : janvier 2008 Messages : 368 ![]() |
Oui j'ai du HTML dans ma page.
Je voudrai en début de page faire un teste pour savoir si l'utilisateur s'est connecté, si c'est le cas je le redirige sur la page d'accueil, sinon je fais rien et le reste de la page avec le formulaire s'affiche. C'est la première page de code que j'ai mis sur mon message. En faite je dois avoir un autre problème. J'ai fais ça : Code php :
<?php header('Location: http://www.google.fr'); ?> Si je fais ça : Code php :
<?phpheader('Location: http://www.google.fr');?> |
|
|
00
|
|
|
#4 |
![]() ![]() Développeur PHP & Architecte logiciel Inscription : mars 2003 Messages : 562 ![]() |
Code :
<?phpheader('Location: http://www.google.fr');?> Tu ne m'as pas compris. Si tu as du Html (du contenu) avant un header(Location, celui-ci ne peut pas fonctionner. Un espace blanc étant un caractère, plus possible d'envoyer un header une fois qu'il est envoyé au client. D'où mes suggestions :
Fais une recherche sur Google sur "headers already sent..", c'est une erreur plus que commune, tu trouveras des explications détaillées
__________________
Zend PHP Certified Engineer tutoriels : tutos PHP, Web & SEO blog : blog.lepine.pro membre de l'AFUP (Association des Utilisateurs de PHP) |
|
00
|
|
|
#5 |
|
Membre actif
![]() Inscription : décembre 2006 Messages : 184 ![]() |
une autre solution en plus de ne pas fermer la balise <?php (cité plus haut) séparer le code php du html, tu ne sera plus jamais sujet à ce genre de problème.
|
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Farid Inscription : janvier 2008 Messages : 368 ![]() |
Merci à tous pour vos réponses.
Enfaite j'ai essayé sur un autre serveur et mon code fonctionne. Le serveur où mon code ne fonctionne pas est XAMPP, c'est un serveur apache php mysql qui s'installe sur clé usb, pour l'instant je peux pas faire autrement que d'utiliser ça. Y a t-il un configuration serveur qui concerne la fonction header? |
|
|
00
|
|
|
#7 |
|
Membre actif
![]() Inscription : décembre 2006 Messages : 184 ![]() |
j'utilise xampp aussi mais je connais pas ce réglage
par contre si ca fonctionne pas dessus corrige plutot ton code que de le faire fonctionner sur un autre serveur je vais me répéter mélanger du html avec le php c'est pas très propre même si à la base c'est l'intéret du php le mélange, mais dès qu'on joue avec les header je dirai de proscrire le mélange sinon on y passe et repasse des heure pour un espace quelque part (vécu ca y a longtemps). |
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Farid Inscription : janvier 2008 Messages : 368 ![]() |
Ben xampp c'est provisoire.
Je vais essayer au max de séparer php et html et mettre mon code de teste dans une class mais pour générer ma page html, je suis bien obliger de mélanger un peu de php et de html. |
|
|
00
|
|
|
#9 | |||||
|
Membre actif
![]() Inscription : décembre 2006 Messages : 184 ![]() |
Citation:
tu peux aussi faire ton propre moteur de template Dans ton cas je ferai 2 fichiers un MaPage.php et MaPage.tpl.php MaPage.php serai ton controller MaPage.tpl.php ta vue dans MaPage.php tu fais tous le travail de requete controle redirection etc.. dans MaPage.tpl.php tu mélange ton php/html mais que pour de l'affichage genre tu passe tes variables résultat c'est un premier pas vers la séparation du code et facile à mettre en oeuvre avantage non négligeable tu tape qu'une fois MaPage.tpl.php que tu appelle dans différent controller par exemple pour l'affichage global je remplace mes ${variable} par leur valeur Code :
moi j'utilise des classes qui écrivent le reste par exemple mon provider de formulaire ci-dessous, bon je pense que les nom sont explicite, Form() pour <form>, Div() pour <div> ect... ensuite pour créer un formulaire j'étend cette classe et le tour est joué bon faut setter des choses. Code :
bon ca demande un peu (voir beaucoup dans mon cas) de travail au début mais après c'est énorme |
|||||
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() Farid Inscription : janvier 2008 Messages : 368 ![]() |
J'aime l'idée, mais je n'arrive pas à voir comment tu remplace tes ${variable} dans ton code html.
Je vais en demandé un peu beaucoup , mais aurai-tu le temps de me faire un exemple complet mais simple, juste pour voir coment le tout se comporte?Je suis en ce moment entrain de chercher une bonne organisation des mes pages et j'ai un peu de mal, j'essaie d'utiliser le MVC et c'est la vue qui me pose le plus de problème. Merci. |
|
|
00
|
|
|
#11 |
|
Membre chevronné
![]() ![]() |
Salut !
Essaie de mettre la fonction exit() après header(), j'avais déjà rencontré ce problème, mais pas sur xampp alors on sait jamais ! Sinon comme cela a déjà été dit, évite tout espace blanc, texte ou code html (y compris dans les fichiers inclus) avant l'utilisation de la fonction header. A+++ |
|
|
00
|
|
|
#12 |
|
Membre chevronné
![]() Farid Inscription : janvier 2008 Messages : 368 ![]() |
Bon j'ai résolu mon problème.
Enfaite il faut faire attention à l'encodage des fichiers, j'utiliser l'utf-8, mais il faut le faire sans BOM. Je sais pas trop ce que ça veut dire pour l'instant, mais apparament PHP ne le gère pas... Donc utf-8 sans BOM et tout marche parfaitement. A+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com