2012-02-22 2 views
0

私は自分自身にPHPフォームを提出しようとしていますが、提出後にページのソースコードが返され、処理されたデータは返されません。php自己返信ソースコードに送信

フォームが送信されたかどうかを確認し、送信されたデータを処理するために同じページに機能がある場合は、isssetがあります。ここで

はコードです:ここでは

 
    if(isset($_POST['submit'])){ 

     if ($_POST['name' == 'px']) { 
      $pxValue = $_POST['value']; 
      $value = convertToEm($pxValue); 
     } 

     if ($_POST['name' == 'em']) { 
      $emValue = $_POST['value']; 
      $value = convertToPx($emValue); 
     } 

     function convertToEm($value) { 
      $base_font = 16; 
      $em_value = $value/$base_font; 
      return $em_value; 

     } 
    } 

の形式である:

<form action="" id="converterPx" method="POST"> 
    <h3>Convert Pixels to Ems:</h3> 
    <label>PX:</label> 
    <input type="text" name="value" value="" /> 
    <?php echo 'Result:'. $value; ?> 
    <input type="hidden" name="type" value="px" /> 
    <input type="submit" name="submit" id="submit-px" /> 
</form> 

フォームは、ブラウザのインス​​ペクタを使用して同じページに

を処理し取得しようと、私がいることがわかりPOSTは値と共に提出されます。

これですべてのヘルプは素晴らしいことだ

+0

あなたは '' タグを忘れていますか? –

答えて

1

を実行するように構成されていません[ 'REQUEST_URI']

//これは、あなたの質問の正確な答えコードが

<?php 
if(isset($_POST['submitBtn'])){ 


    function convertToEm($value) { 

      $base_font = 16; 
      $px_value = $value/$base_font; 
     return $px_value; 
     } 
     function convertToPx($value) { 
      $base_font = 32; 
      $em_value = $value/$base_font; 
      return $em_value; 
     } 

     if (isset($_POST['type']) && $_POST['type']=='px') { 

      $pxValue = $_POST['value']; 
     $value = convertToEm($pxValue); 

     } 

     if (isset($_POST['type']) && $_POST['type'] == 'em') { 

      $emValue = $_POST['value']; 
      $value = convertToPx($emValue); 

     } 


    } 

//form data 

<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" id="converterPx" method="POST"> 
    <h3>Convert Pixels to Ems:</h3> 
    <label>PX:</label> 
    <input type="text" name="value" /> 
    <?php echo 'Result:'.$value; ?> 
    <input type="hidden" name="type" value="px" /> 
    <input type="submit" name="submitBtn" id="submit-px" /> 
</form> 
+0

action = ""が空白の場合は、自分自身に投稿します –

+0

@LawrenceCherone、しかしデータを送信する適切な方法ではありません。PHP標準では、いくつかのコーディングスタイルに従います。 –

+0

@Sam Arul Raj - ヘルプありがとう、今良い仕事! – estern

0

$_POST['name' == 'px']はおそらく、(同様の変化は、同様の構造の上に作られていると)$_POST['name'] == 'px']でなければなりません。

2つの文字列の比較結果(配列のインデックスはfalse)を配列インデックスとして使用しようとしています。

0

<?php ?>タグを忘れていませんか? $_POST['name' == 'px']$_POST['name'] == 'px'でなければなりません。convertToPx関数がありません。フォームにnameという名前のパラメータがありません。何もエコーしません。

あなたが に提出している、 自己に提出していない
<?php if(isset($_POST['submit'])){ 

     if ($_POST['name']== 'px') { 
      $pxValue = $_POST['value']; 
      $value = convertToEm($pxValue); 
     } 

     if ($_POST['name'] == 'em') { 
      $emValue = $_POST['value']; 
      $value = convertToPx($emValue); 
     } 

     function convertToEm($value) { 
      $base_font = 16; 
      $em_value = $value/$base_font; 
      return $em_value; 
     } 
     function convertToPx($value) { 
      $base_font = 32; 
      $em_value = $value/$base_font; 
      return $em_value; 
     } 


    echo $value; 
    } 
?> 
+0

yah私は関数が存在しないことを知っています。私はconvertToPxフォームをテストしています。 $ _POST ['name'] == 'px' – estern

+0

PHPタグはあまりにもちょうどここにコードにコピーしていない – estern

0

:編集

<form action="" id="converterPx" method="POST">

:ローレンスが指摘したように、1は使用しないでください方法Iは最初に以下で説明した。代わりに、$_SERVER['SCRIPT_NAME'];を使用して詳細については、を参照http://www.webadminblog.com/index.php/2010/02/23/a-xss-vulnerability-in-almost-every-php-form-ive-ever-written/

オリジナル:あなたはフォームを呼び出す方法に応じて、あなたが試すことができます:ここ

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" id="converterPx" method="POST">

詳細:http://www.html-form-guide.com/php-form/php-form-action-self.html

+0

私はこれを行うときに%3C?php%20echo%20 $ _SERVER%5B'PHP_SELF '%5D%20?%3E – estern

+0

あなたは '<?php echo $ _SERVER [' PHP_SELF ']を使用するべきではありませんか? > 'を使用すると、XSSとXSRFは自分自身に投稿する場合に' action = "" 'を使用する方が良いでしょう... –

+0

処理を行うスクリプトと同じスクリプトでフォームが生成されていますか? – msanford

1

の場合返されたページにPHPソースが表示されます。これは、タグを忘れたためです。

ため、またはサーバーの同じページで自己アクションはフォームアクションの$ _SERVERでこれを使うようにするには、PHPを正しく

(またはファイル名が間違った拡張子を持つ)

+0

私のサーバがPHPを実行するように設定されているかどうかを確認するには、phpinfo() – estern

1

これはあなたのコードのタイプミスです,,あなたは名前を代わりに使用するタイプ

if ($_POST['type']== 'px') { 
     $pxValue = $_POST['value']; 
     $value = convertToEm($pxValue); 
    } 

    if ($_POST['type'] == 'em') { 
     $emValue = $_POST['value']; 
     $value = convertToPx($emValue); 
    } 
+0

@estern最近の回答を確認してください。これはあなたの求めるものです –