IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] Page blanche au lancement d'un script PHP


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut [PHP-JS] Page blanche au lancement d'un script PHP
    Bonjour,

    j'ai une page html qui appelle un script PHP dans lequel je vérifie les champs d'un formulaire. Si certains champs manquent dans mon formulaire HTML j'affiche un message et je fait une redirection (en PHP). Mais le problème c'est que je n'ai pas le temps de voir la fenêtre s'affichait car je suis tout de suite redirigé.
    Quand le script php est lancé j'ai une page blanche et j'aimerais que mon script PHP s'execute avec mon formulaire HTML en fond. C'est possible ???
    Mon script php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if($var=true)
    {
    header('Location: page1.html'); // Redirection du navigateur
    }
    else
    {
    echo ("<script language=javascript>OuvreFenetre('Veuillez resaisir votre mot de passe'); </script>"); //Affiche une fenetre
    header('Location: page2.html'); // Redirection du navigateur
     
    }
    ....
    //suite de mon code
    Mes contributions phares en dev : www.rigaudie.fr

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour afficher un message sur le formulaire, il faut passer un paramètre et rediriger vers une page "formulaire.php?erreur=nom"
    ensuite sur la page du formulaire tu récupères ce paramètre pour savoir quels champs ne sont pas valides

  3. #3
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    Je crois ne pas trop avoir saisie se que tu m'as dis. Je dois faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location:formulaire.php?erreur=nom');
    et tu veux dire que erreur contient le champs qui n'est pas rempli ??
    Mes contributions phares en dev : www.rigaudie.fr

  4. #4
    FoxLeRenard
    Invité(e)
    Par défaut
    Bonjour,
    mathieu te dit:
    Citation Envoyé par mathieu Voir le message
    pour afficher un message sur le formulaire, il faut passer un paramètre et rediriger vers une page "formulaire.php?erreur=nom"
    ensuite sur la page du formulaire tu récupères ce paramètre pour savoir quels champs ne sont pas valides
    Alors j'ajouterais, que même si tu as des html sans une ligne de PHP,
    tu gagnera beaucoup en souplesse a tout appeler PHP
    même en mettant en tête de tes html
    pour en revenir a ton probléme, gardes en mémoire que les header doivent étre vides avant un reroutage ...

    Et Oui c' est ça qu'il faut employer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header('Location:formulaire.php?erreur=nom');

  5. #5
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    pour en revenir a ton probléme, gardes en mémoire que les header doivent étre vides avant un reroutage ...
    tu veux dire que dans ma page je dois ne rien avoir entre
    ?

    Et Oui c' est ça qu'il faut employer

    Code :

    header('Location:formulaire.php?erreur=nom');
    OK mais erreur=nom ça correspond à quoi ?

    Merci de vos renseignement je débute en PHP, donc je suis preneur de toutes remarques.
    Mes contributions phares en dev : www.rigaudie.fr

  6. #6
    FoxLeRenard
    Invité(e)
    Par défaut
    Non, justement, si une condition justifie le reroutage,

    1) il faut le mette nimporte ou avant le premier echo OU la premiére fermeture de PHP

    2) commencer l'ouverture du PHP collé enhaut a gauche de ta page

    comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?PHP
    //====== bla bla de code PHP meme si 1000 lignes
    //======s' il n' y a aucun print ou echo
     
     
    //tu vois on peut même mettres des lignes 
    //vides elles ne sont pas en echo vers le client
     
    if ($a=="reroute") header('Location: page1.html');
    ?>
    <html><body>

  7. #7
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    J'ai créer un fichier qui contient à la fois mon script PHP et ma page HTML (comme tu me la conseillé )
    index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    function OuvertureSession()
    {
    //code de ma fonction
    }
    ?>
    <html>
    <body>
    <form name="formul" method="post"  enctype="multipart/form-data" action="<?php OuvertureSession(); ?>">
    //mon formulaire
    </form>
    </body>
    </html>
    Mais le code php, en début de mon index.php, est exécuté dès l'affichage de ma page. Je voudrais qd je soumet le formulaire.
    Mes contributions phares en dev : www.rigaudie.fr

  8. #8
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    A faire du bricolage à droite à gauche le code commence à venir du n'importe quoi. J'ai trouvé le problème au post précédent. Par contre j'en suis amené à vous posez une autre question :

    J'ai des échanges à faire entre du code JS et PHP, quel est la méthode la plus approprié pour le faire. Je vais donner des exemples pour illustrer :

    - j'ai un formulaire html dans lequel je vérifie les champs en JS avant de l'envoyer en PHP pour l'intégrer en base de donnée (vérification aussi des champs en PHP)
    - création d'une fenêtre en JS dans lequel j'affiche toutes les infos que doit connaitre l'utilisateur. J'utilise cette fenêtre en remplacement de alert en JS et echo en PHP
    - échange de variable entre JS et PHP pour connaitre le résultat des requêtes SQL
    -...

    Les exemples que j'ai donné fonctionne mais chacune à une synthaxe d'échange des données différentes, et à force je m'y perd à ne plus savoir quoi utiliser !!!

    Ma question est n'existe il pas un moyen commun pour faire des échanges entre ces deux langages ? (on utilise la méthode post pour le formulaire y en pas une autre pour faire un échange entre JS et PHP ??)

    Tous commentaires est le bien venu

    Bonne soirée
    Mes contributions phares en dev : www.rigaudie.fr

  9. #9
    Membre confirmé Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Points : 547
    Points
    547
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if($var=true)
    {
    header('Location: page1.html'); // Redirection du navigateur
    }
    else
    {
    echo ("<script language=javascript>OuvreFenetre('Veuillez resaisir votre mot de passe'); </script>"); //Affiche une fenetre
    header('Location: page2.html'); // Redirection du navigateur
     
    }
    ....
    //suite de mon code
    $var==true -> ca marche mieux avec le double égal

    Si tu veux faire des échanges entre php et JS -> Ajax et vois l'objet XmlHttpRequest

    ++

  10. #10
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    J'ai regardé se que c'était l'AJAX mais je crois pas que se soit se que j'ai besoin. En effet, si j'ai bien compris le script est en JS et tu peux aller chercher des infos sur le serveur (PHP) sans tout charger la page. Mais moi, pour ma fenêtre par exemple, c'est plutôt l'inverse que je cherche à faire. Depuis PHP executer du JS (dans mon cas de la fenetre j'appel mon JS, depuis PHP, pour créer ma div et ensuite de retour dans PHP on continue le script PHP. Puis j'appel encore appel à JS pour afficher le contenu de ma fenetre...etc)
    Mes contributions phares en dev : www.rigaudie.fr

  11. #11
    Membre confirmé Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Points : 547
    Points
    547
    Par défaut
    Tu ne peux pas exécuter du JS depuis PHP.

    Pour rappel, le JavaScript est un langage utilisé côté client et exécutable uniquement sur le navigateur. PHP, lui, est un langage serveur, exécutable uniquement à ce niveau et invisible pour le navigateur.
    Donc, il n'existe que 2 moyens de dialoguer entre les scripts PHP et JS.
    Soit, à l'aide de PHP, tu génères du JS qui sera exécuté par le navigateur client.
    Soit, à l'aide de JS, tu interroges le serveur PHP et là c'est de l'AJAX!

    Garde à l'esprit qu'une fois ta page envoyée vers le navigateur PHP ne peut plus rien faire.

    ++

  12. #12
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    Ajax peut être utilisé pour faire un site en Java qui requete des base via des script PHP.

    Mais tu peux très bien faire d'ajax ton gestionnaire d'événement.

    J'ai l'habitude de faire mes sites web avec un DIV que je sorts de la vue fenête afin de pouvoir l'appeler quand j'en ai besoin pour afficher des infos ou bien faire les authentifactons. et tous ça est géré par JavaScript.

    Donc si tu veux faire un site "a la page" penche toi plutot sur l'ajax.

    Car se que tu veux obtenir existe et était employé il n'a pas longtemps. Mais ce n'est plus vraiment exploité car cela chargeais beaucoup les sites.

    Le principe était que le bouton "envoyer" du formulaire faisait appel a un script JAVA qui devait charger la page PHP mais avant ça vérifiais toutes les informations saisie, si les condition étaient remplis continuais le chargement et sinon t'affichais ton formulaire sans plus rien dedans ou sans te donner de raison a cet echec

    Il fallait combiner $Session et cookies pour obtenir un site qui ne perdait pas tes infos en cas d'erreur.

    Aujourd'hui tu soumets ton formulaire par un javascript et la requete XmlHttpRequest a une moulinette php qui vérifie les champs puis valide la saisie ou bien de retourne les valeurs avec la raison de l'echec.

    C'est une technologie qui vaut le détour.
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  13. #13
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    Aujourd'hui tu soumets ton formulaire par un javascript et la requete XmlHttpRequest a une moulinette php qui vérifie les champs puis valide la saisie ou bien de retourne les valeurs avec la raison de l'echec.
    Tu veux dire que je peux utiliser uniquement de l'ajax pour mon formulaire sans passer par une vérification php. Selon toi il vaut mieux construit un script ajax avec quelques requêtes vers la BD que d'utiliser du JS + du PHP qui fait des requêtes SQL ?
    Mes contributions phares en dev : www.rigaudie.fr

  14. #14
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    Non ! l'ajax c'est JS + PHP (tu peux avoir du ASP + JS mais bon je te conseil pas )

    Tu soumets ton formulaire à une page PHP par le biais de la requete XmlHttpRequest (donc JS). Pendant que ta moulienette PHP traite tes données la requete XmlHttpRequest attends un retour pour indiquer l'état d'avancement du traitement.

    Enfait il va falloir que tu crées 3 scripts.

    _ Un script PHP pour ton aspect utilisateurs.
    _ Un second script PHP pour ta moulinette qui vérifiera les données de ton formulaire et les traitera si elle sont aptes. Ce même script pourra te retourner un état d'avancement.
    _ Puis un script JAVASCRIPT pour traiter l'evenement de soumission de ton formulaire et également traiter les retour de ta moulinette.

    Un exemple simple : (que je suis sûr que tu as déjà vécu)
    Tu saisies ton Pseudo sur un formulaire.
    Puis tu valides ce formulaire en cliquant sur Envoyer.
    Après un laps de temps le formulaire va à nouveau s'afficher en indiquant en rouge que ton Pseudo existe déjà.

    En arrière plan il s'est passé après ta validation :

    Le script JavaScript a traité l'evenement du clique sur le bouton "Envoyer" et a généré un requete XmlHttpRequest pour le script "Moulinette"

    Le script "moulinette" PHP a reçu les informations soumisent par la requete XmlHttpRequest puis vérifie dans une bdd si ton pseudo exite ou pas. Il retourne à la requete XmlHttpRequest une information lui indiquant que le pseudo existe déjà.

    Le script JavaScript récupère le retour de la requete XmlHttpRequest et affiche à coté du champ Pseudo un message t'informant que ce Pseudo est déjà connu.

    Il existe un bon livre sur le sujet.

    Premières applications Web 2.0 avec Ajax et PHP
    de Jean-Marie Defrance
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  15. #15
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    Merci beaucoup llaffont tu m'as énormement aidé
    Enfait il va falloir que tu crées 3 scripts.

    _ Un script PHP pour ton aspect utilisateurs.
    _ Un second script PHP pour ta moulinette qui vérifiera les données de ton formulaire et les traitera si elle sont aptes. Ce même script pourra te retourner un état d'avancement.
    _ Puis un script JAVASCRIPT pour traiter l'evenement de soumission de ton formulaire et également traiter les retour de ta moulinette.
    Avec l'exemple que tu as donné c'est exactement ça que je voulais faire. Je vais m'y mettre
    Merci pour tes informations sur l'ajax ça m'a beaucoup aidé
    Mes contributions phares en dev : www.rigaudie.fr

  16. #16
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 95
    Points : 40
    Points
    40
    Par défaut
    Salut
    Pourrais tu nous montrer l'exemple que tu as utilisé ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Page Blanche au lancement
    Par benyahia4 dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 03/03/2010, 12h16
  2. IIS / PHP 5 : page blanche
    Par lediz dans le forum IIS
    Réponses: 4
    Dernier message: 12/11/2009, 12h32
  3. [MySQL] Site en PHP affiche page blanche au Japon
    Par tomguiss dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/06/2009, 14h36
  4. lancement d'un script php par cron
    Par gege87270 dans le forum AIX
    Réponses: 8
    Dernier message: 06/02/2008, 16h44
  5. Réponses: 3
    Dernier message: 13/11/2006, 20h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo