2017-11-23 7 views
1

私のウェブサイトのAMPページを作成しました。デスクトップブラウザですべて正常に動作し、モバイルで正常に動作します。エラーメッセージを表示します。また、成功した送信時には、送信成功メッセージが正しく表示されます。AMPフォームのレスポンスがGoogleキャッシュで機能しない

アンプページをキャッシュするためにページをGoogleに送信したとき、フォームをもう一度テストしましたが、今度はエラーまたは成功メッセージが表示されません。しかし、フォーム提出が有効な場合は、私に電子メールを送信しますが、成功メッセージは表示しません。

フォームのHTMLコード:

<form action-xhr="posts/submit.php" method="POST" class="contactForm" target="_top"> 
    <fieldset> 
     <div class="formFieldWrap"> 
      <label class="field-title">Select a product:<span>(required)</span></label> 
      <div class="select-style full-bottom"> 
      <select name="product"> 
        <option selected="" disabled="">Select a Product</option> 
        <option value="product1">product 1</option> 
        <option value="product2">product 2</option> 
      </select> 
      </div> 
     </div>     
     <div class="formFieldWrap"> 
      <label class="field-title">Full Name:<span>(required)</span></label> 
      <input type="text" name="fullname" value="" class="contactField" /> 
     </div> 
     <div class="formFieldWrap"> 
      <label class="field-title">Telephone: <span>(required)</span></label> 
      <input type="text" name="telephone" value="" class="contactField" /> 
     <div class="formFieldWrap"> 
      <label class="field-title">Email: <span>(required)</span> 
      </label> 
      <input type="text" name="email" value="" class="contactField" /> 
     </div> 
     <input type="hidden" name="ps" value="amp_Homepage"> 
     <div class="formSubmitButtonErrorsWrap contactFormButton"> 
      <input type="submit" class="buttonWrap button bg-teal-dark contactSubmitButton" value="Start my claim" /> 
     </div> 
    </fieldset> 
    <div submit-success> 
     <template type="amp-mustache"> 
      <span class="center-text color-green-dark"><strong>Congratulations {{fullname}}!</strong> You have successfully submitted your claim. You can expect a telephone call from My Claim Solved just to confirm a few details.</span> 
     </template> 
    </div> 
    <div submit-error> 
     <template type="amp-mustache"> 
      <span class="center-text color-red-light"><strong>Oops!</strong> {{message}}</span> 
     </template> 
    </div> 
</form> 

PHPのページは:

<?php 
$source_origin = trim($_REQUEST['__amp_source_origin']);//Security 
if($source_origin != "https://example.com"){ 
echo "Not allowed origin"; 
return; 
} 
header('AMP-Access-Control-Allow-Source-Origin: https://example.com'); 
header('Content-Type: application/json; charset=UTF-8;'); 

$start = microtime(true); 
$con=mysqli_connect("myip","myuser","mypass","mydb"); 


$Product = mysqli_real_escape_string($con, $_REQUEST['product']); 
$FullName = mysqli_real_escape_string($con, $_REQUEST['fullname']);$FullName = ltrim($FullName);$FullNameMail = mysqli_real_escape_string($con, $_REQUEST['fullname']); 
$Telephone = mysqli_real_escape_string($con, $_REQUEST['telephone']); 
$Email = mysqli_real_escape_string($con, $_REQUEST['email']); 
$Provider = mysqli_real_escape_string($con, $_REQUEST['provider']); 
$PageSource = mysqli_real_escape_string($con, $_REQUEST['ps']); 


if($Product != 'product1' && $Product != 'product2'){ 
    header('Status: 400', TRUE, 400); 
    echo json_encode(array('message'=>'You must select a product.')); 
}elseif(empty($FullName) || strlen($FullName)<3) { 
    header('Status: 400', TRUE, 400); 
    echo json_encode(array('message'=>'You must enter your full name.')); 
}elseif (empty($Telephone) || strlen($Telephone)<9) { 
    header('Status: 400', TRUE, 400); 
    echo json_encode(array('message'=>'You must enter a valid telephone number.')); 
}elseif (!filter_var($Email, FILTER_VALIDATE_EMAIL)) { 
    header('Status: 400', TRUE, 400); 
    echo json_encode(array('message'=>'You must enter a valid email address.')); 
}else{ 

    // Send Email 
    $To = "[email protected]"; 
    $Message = "bla bla"; 
    $Headers = "From: [email protected]"; 
    mail($To, 'subject bla', $Message, $Headers); 


    echo json_encode(array("product"=>$Product,"fullname"=>$FullName,"telephone"=>$Telephone,"email"=>$IPAddress)); 
} 

?> 
+0

GoogleキャッシュからCORSリクエストを有効にしたことを確認しましたか? – ade

+0

JSONはどこですか? –

+0

'action-xhr'は絶対URLでなければなりません。 –

答えて

0

だけであなたはそれが(正しい方向に私を指しているためADEのおかげで)固定されたかを知らせるために、私は改正以下のPHPページのヘッダ:

header("access-control-allow-credentials:true"); 
header("access-control-allow-headers:Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token"); 
header("access-control-allow-methods:POST, GET, OPTIONS"); 
header("access-control-allow-origin:".$_SERVER['HTTP_ORIGIN']); 
header("access-control-expose-headers:AMP-Access-Control-Allow-Source-Origin"); 
header("amp-access-control-allow-source-origin:https://".$_SERVER['HTTP_HOST']); 
header("Content-Type: application/json"); 
関連する問題