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 :

AMP Form Action-xhr


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Points : 98
    Points
    98
    Par défaut AMP Form Action-xhr
    Bonjour, je teste actuellement AMP Form.

    J'ai donc un fichier FORM.PHP à la racine de mon site /

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <!doctype html>
    <html amp lang="fr">
    <head>
        <title>Test formulaire AMP</title>
    	<meta charset="utf-8" />
    	<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    	<link rel="canonical" href="/form">
    	<script async src="https://cdn.ampproject.org/v0.js"></script>
    	<script async custom-element="amp-form" src="https://cdn.ampproject.org/v0/amp-form-0.1.js"></script>
    	<script async custom-template="amp-mustache" src="https://cdn.ampproject.org/v0/amp-mustache-0.2.js"></script>
    	<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
    </head>
    <body>
    <form method="post" action-xhr="https://MONSITE.COM/form-xhr.php" target="_blank">
    	<p><label for="email">Un texte : </label><input type="text" name="name" value="" required></p>
    	<p><label> </label><input type="submit" value="Envoyer"></p>
     
    	<div submit-success>
    		<template type="amp-mustache">Le texte renvoyé par PHP : {{name}}</template>
    	</div>
    	<div submit-error>
    		<template type="amp-mustache">Erreur !</template>
    	</div>
    </form>
    </body>
    </html>
    et un fichier FORM-XHR.php également à la racine de mon site

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    header('Content-Type: application/json');
    header('Access-Control-Allow-Origin: https://'.$_SERVER['HTTP_HOST']);
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin');
    header('AMP-Access-Control-Allow-Source-Origin: https://'.$_SERVER['HTTP_HOST']);
     
    $data = array();
    $data['name'] = $_POST['name'];
    echo json_encode($data);
    ?>
    Super Tout Fonctionne bien à la RACINE du site.

    Mais comme je développe mon site non pas à la racine mais en amont de la racine
    /Code
    /Public (racine du site)

    Je voudrais remonter FORM-XHR.php dans /Code
    Il faut donc que je redirige https://MONSITE.COM/form-xhr.php vers /Code/form-xhr.php

    Avec .htaccess je fais tout pointer vers index.php (précontrolleur).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <IfModule mod_rewrite.c>
    # Active la réécriture d'URL :
    	RewriteEngine On
    # Si le fichier demandé n'existe pas :
    	RewriteCond %{REQUEST_FILENAME} !-f
    # Si le dossier demandé n'existe pas non plus :
    	RewriteCond %{REQUEST_FILENAME} !-d
    # On redirige vers index.php
    	RewriteRule ^(.*)$ index.php/$1 [QSA,L]
    </IfModule>

    J'ai donc un fichier index.php à la racine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    if( $_SERVER['REQUEST_URI'] === '/form') {
    	echo 'Ma Page<br>';
    	echo 'Mon Adresse : ' . $_SERVER['REQUEST_URI'] . '<br>';
    	require_once dirname( __DIR__ ) . '/Code/form.php';
    }
    if( $_SERVER['REQUEST_URI'] === '/form-xhr') {
    	require_once dirname( __DIR__ ) . '/Code/form-xhr.php';
    }
    if( $_SERVER['REQUEST_URI'] !== '/form' && $_SERVER['REQUEST_URI'] !== '/form-xhr' ) {
    	echo 'En Construction';
    }
    puis un FORM.PHP le même qu'avant mais en supprimant .php au niveau de action-xhr="https://MONSITE.COM/form-xhr"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <!doctype html>
    <html amp lang="fr">
    <head>
        <title>Test formulaire AMP</title>
    	<meta charset="utf-8" />
    	<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    	<link rel="canonical" href="/form">
    	<script async src="https://cdn.ampproject.org/v0.js"></script>
    	<script async custom-element="amp-form" src="https://cdn.ampproject.org/v0/amp-form-0.1.js"></script>
    	<script async custom-template="amp-mustache" src="https://cdn.ampproject.org/v0/amp-mustache-0.2.js"></script>
    	<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
    </head>
    <body>
    <form method="post" action-xhr="https://MONSITE.COM/form-xhr" target="_blank">
    	<p><label for="email">Un texte : </label><input type="text" name="name" value="" required></p>
    	<p><label> </label><input type="submit" value="Envoyer"></p>
     
    	<div submit-success>
    		<template type="amp-mustache">Le texte renvoyé par PHP : {{name}}</template>
    	</div>
    	<div submit-error>
    		<template type="amp-mustache">Erreur !</template>
    	</div>
    </form>
    </body>
    </html>

    et FORM-XHR.php qui se trouve maintenant dans /Code (avant la racine) mais le code n'a pas changé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    header('Content-Type: application/json');
    header('Access-Control-Allow-Origin: https://'.$_SERVER['HTTP_HOST']);
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin');
    header('AMP-Access-Control-Allow-Source-Origin: https://'.$_SERVER['HTTP_HOST']);
     
    $data = array();
    $data['name'] = $_POST['name'];
    echo json_encode($data);
    ?>
    MAIS LA CELA NE FONCTIONNE PLUS !!!

    Pour résumer le script de départ fonctionne si FORM.php et FORM-XHR.php sont à la racine du site (/public)

    L'objectif est de les remonter dans /Code avant la racine en passant par un index.php point d'entrée unique.

    Si je tape /form-xhr dans l'url cela génère bien directement le fichier json (vide car appel direct mais qui démontre que index.php fait bien son travail) parcontre form action-xhr="https://MONSITE.COM/form-xhr" n'arrive pas à récupérer le fichier json valide.

    Je n'arrive pas à comprendre la raison

  2. #2
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Points : 98
    Points
    98
    Par défaut
    Si je mets mon FORM-XHR.php dans /Code (avec le code générant le json) et un FORM-XHR-PUBLIC.php à la racine qui fait juste un require vers le /Code/FORM-XHR.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    require_once dirname( __DIR__ ) . '/Code/form-xhr.php';
    dans tous les cas c'est bien /Code/FORM-XHR.php qui va se déclencher (soit directement /Code/FORM-XHR.php soit au travers de /Public/FORM-XHR-PUBLIC.php).

    Si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    action-xhr="https://monsite.com/form-xhr-public.php"
    du coup cela appelle directement /Public/FORM-XHR-PUBLIC.php (car fichier existe on passe au travers du htaccess) et /Public/FORM-XHR-PUBLIC.php fait un require de /Code/FORM-XHR.php

    et bien cela fonctionne, alors que si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    action-xhr="https://monsite.com/form-xhr"
    le htaccess redirige vers index.php qui require directement vers /Code/FORM-XHR.php

    ET la cela NE fonctionne PLUS... j'appelle toujours le même fichier au final /Code/FORM-XHR.php, mais selon par ou je l'appelle cela ne fonctionne pas

Discussions similaires

  1. PB sur form.action et form.submit !
    Par wormseric dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/11/2006, 13h55
  2. Form action Frame
    Par phil22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 08/08/2006, 12h14
  3. Javascript dans un formulaire type echo"<form action
    Par coyoteuch dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2006, 11h20
  4. Form Action = affiche page actuelle
    Par sperron dans le forum ASP
    Réponses: 6
    Dernier message: 29/05/2006, 12h36
  5. <form action="" method="post" >
    Par sagitarium dans le forum Langage
    Réponses: 4
    Dernier message: 19/05/2006, 22h46

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