7

ユーザー名と電子メールを編集するためのフォームがあります。そのため、名前と電子メールを更新するときは、更新する必要がある行を識別するためにユーザー名が必要です。

だから、フォームで渡された要素があるかどうかを知りたかったのですが、入力タグで値を表示したり編集したりできません。

だから私は1つのスクリプトからユーザー名を取得します。edit user スクリプトは、指定されたユーザー名でデータベースから名前と電子メールを取得します。次に、その新しい名前と電子メールをユーザー名とともに別のスクリプトに渡し、それを更新します。

4

8 に答える 8

7

私はあなたが探していると信じています

 <input type='hidden' name='username' value='theusername' />

hidden- HTML ドキュメントのソースにのみ表示されます- 送信時
nameに $_REQUEST/$_POST/$_GET (フォームの送信方法に応じて $_POST または $_GET) 変数に
valueなります - 必要なユーザー名

PRO TIPに関連するこのフォーム: 誰がユーザーを更新しようとしているのかを知る方法を用意して、許可されていない人がユーザー情報を更新するのを防ぎます。誰かがフォームのユーザー名を変更して、他の誰かを更新しようとするのは非常に簡単です。

于 2011-04-23T14:27:18.190 に答える
4

入力タイプ非表示を使用できます

<input type="hidden" name = "username" value="<?php echo $username ?>">
于 2011-04-23T14:27:31.227 に答える
4

以下を使用します。

 <input type="hidden" />

HIDDENs の要素に対する属性TYPE値です。ドキュメントに表示されず、ユーザーが操作しないフォーム フィールドを示します。クライアントまたはサーバーに関する状態情報を送信するために使用できます。非表示のフィールドには、多くの場合、(php などを介して) デフォルト値が保存されているか、JavaScript によって値が変更されています。INPUTFORM

詳細はこちら

于 2011-04-23T14:27:47.643 に答える
3

非表示の入力タグを使用します:

<input type='hidden' name='username' value='theusername' />
于 2011-04-23T14:28:24.517 に答える
3

非表示のフォーム フィールドを使用できます。

<input type="hidden" name="originalUsername" value="something" />

これはブラウザのフォームにレンダリングされず、無視されてユーザーに気付かれない可能性があります。

ただし、これ編集可能 であることに注意してください。セキュリティ対策としてこれに依存しないでください。フォームが送信されたら、データベースに永続化する前に、フォームを送信するユーザーが (適切な認証および承認メカニズムを使用して) この変更を行う権限を持っていることを確認してください。 送信されるフォーム フィールドはすべて編集できます。

于 2011-04-23T14:29:49.483 に答える
3

他のすべての人が述べたように、隠された入力が必要です。ただし、編集可能ですが、外部からの他のデータを信頼しないため、決して信頼しないでください。

ただし、行を識別するためにユーザー名を使用せず、代わりに ID 列を主キーとしてデータベースに追加し (おそらく自動インクリメント)、それをフォームで使用する方がよいことを付け加えたいと思います。

何かのようなもの

<input type="hidden" name="userid" value="<?=$userid?>" />
于 2011-04-23T14:31:57.983 に答える
3

アルンさん、GET を使用して、あるページから別のページに変数を渡すことができます。などのように単純に URL を構成しますedituser.php?username=arun。これは、フォーム タグを使用せずに、もちろん Cookie を除いて、変数またはデータを他のページに渡す唯一の可能な方法です。
2 番目の方法は、JavaScript を使用して非表示のフォーム フィールドを作成し、それをユーザー名で更新することです。
3 つ目は、単純に非表示の入力タグを追加することです。ただし、これと後者にはフォームタグが必要です。

注意点として、JS、GET、または非表示フィールドであるユーザー入力をフィルタリングします。

于 2011-04-23T14:34:59.607 に答える
2

安全に使用したい場合は、これを使用してください。

<input type='hidden' name='username' value='<?php echo encode("Please Encode Me!","This is a key"); ?>' />

結果は次のようになります。

<input type='hidden' name='username' value='p3e4e4241674d2r4m4i5o464a4f2p3k5c2' />

変更スクリプトでは、次を使用する必要があります。

<?php $username = decode("p3e4e4241674d2r4m4i5o464a4f2p3k5c2","This is a key"); ?>

以下に、ENCODE/DECODE 用の PHP 関数を示します。

<?php

function encode($string,$key) {
    $key = sha1($key);
    $strLen = strlen($string);
    $keyLen = strlen($key);
    for ($i = 0; $i < $strLen; $i++) {
        $ordStr = ord(substr($string,$i,1));
        if ($j == $keyLen) { $j = 0; }
        $ordKey = ord(substr($key,$j,1));
        $j++;
        $hash .= strrev(base_convert(dechex($ordStr + $ordKey),16,36));
    }
    return $hash;
}

function decode($string,$key) {
    $key = sha1($key);
    $strLen = strlen($string);
    $keyLen = strlen($key);
    for ($i = 0; $i < $strLen; $i+=2) {
        $ordStr = hexdec(base_convert(strrev(substr($string,$i,2)),36,16));
        if ($j == $keyLen) { $j = 0; }
        $ordKey = ord(substr($key,$j,1));
        $j++;
        $hash .= chr($ordStr - $ordKey);
    }
    return $hash;
}

?>
于 2011-04-23T20:28:02.667 に答える