web-dev-qa-db-ja.com

phpとして受信されるものとは異なる値を入力から表示します

テキスト型の入力で、PHPに送信する値とは異なる値を表示する方法があるかどうかを知りたいのですが。

たとえば、次のようになります。

ジョンを表示する_<input type="text" value="John">_。

ユーザーの場合は値を「Doe」に変更できますが、phpの場合は「John」のままにしますか?

$.attr('value')$.val()の違いを使用してこれを達成できますか?

いくつかのテストを実行しましたが、コントローラーで直接逆にする必要があるようです。他の解決策はありますか?

ここに少し jSFiddle 遊んでみてください。

8
Baldráni

確かに奇妙な要求ですが...

フィールドの値を変更することはできず、単純なフォーム送信を行うだけです。フィールドは、そこにあるものは何でも忠実に送信します。このトーの周りにいくつかのハッカーの方法があります

オプション1-非表示フィールド

したがって、フィールドをdisable作成し、非表示フィールドを追加します。無効にされたフィールドは成功しませんが、ユーザーはフィールド値を変更できず、多くのブラウザーはフィールドのスタイルを自動的に変更します。

<input type="text" name="name" value="John" disabled>
<input type="hidden" name="name" value="Doe">

オプション2-送信時に値を変更する

おっしゃるように、フォームの送信時にいつでも値を変更できます。以下のリスナーは、jQueryを使用して送信されたフォームをキャプチャします。

$("form").on( "submit", function( event ) {
  event.preventDefault();
  $('input[name="name"]').val('Doe');
  $("form").submit();
});
11
Machavity

(純粋な)PHPソリューションを受け入れる場合は、できることを確認してください。

補足:エンドユーザーがJavascriptを無効にする場合は、サーバーサイドメソッド(Plan-Bとして)を使用することをお勧めします。

ただし、ユーザーが入力の「すでに表示されている」値を置き換える場合。

このメソッドが機能するためには、入力がname属性を保持している必要があります。

<?php 

if(!empty($_POST['name'])){

   echo $name = $_POST['name']; // Will echo what was replaced in the input

}

else{
 echo $name = $_POST['name']; // Will echo the value that was already set in the input
}

?>


<form method="post">

<input type="text" value="John" name="name">

<input type="submit">

</form>

注:echo $var = "something";は有効な構文です。


編集:

ここで何を達成したいのかは明確ではありません。ただし、非表示の属性を使用して、入力からvalue="John"を削除することはできます。

ユーザーは入力を入力する必要があります。

以下は、入力が空白のままの場合にのみ「Doe」を出力しますが、入力が入力されている場合は両方を出力します。

<?php 

if(!empty($_POST['name'])){

   echo $name = $_POST['name'];

}

    else{
     echo $name = $_POST['name'];
    }


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

   echo $hidden = $_POST['hidden_name_value'];

}



?>


<form method="post">

<input type="text" name="name">

<input type="hidden" name="hidden_name_value" value="Doe">

<input type="submit">

</form>
2