0

私はPHPに比較的慣れていないので、これは管理するのが簡単なコードだと思います。私がしたいのは、ページに HTML の入力ボックスを配置することです。誰かがそこに名前を入力すると、Javascript を使用して、同じ入力ボックスに、Web サイトの文字列を含む名前のエンコードされたバージョンを出力できるようにしたいと考えています。その前に新しいリンクを作成します。これで、誰かが Web ブラウザーでこのリンクにアクセスすると、ページに name 変数が表示されます。

John は自分の名前を HTML フォームに入力します。

「ジョン・ディキンソン」

送信ボタンを押すと、名前を入力したばかりの HTML 入力ボックスが次のように変わります。

「http://www.example.com/johndickinsonencoded/」

ここで、Johndickinsonencoded は、彼の名前のエンコードされた文字列です。

「http://www.example.com/johndickinsonencoded/」に Web ブラウザでアクセスすると、画面に次のように出力されます。

「ハロー・ジョン・ディキンソン」

助けていただければ幸いです:)

4

1 に答える 1

0

JavaScript を使用してフィールドをエンコードし、PHP に到達するときに文字列をデコードする何らかの方法が必要になります。base64 を使用するだけでも、前後に移動するコーデックを選択するのはかなり簡単です。(JavaScript には base64 エンコーディングの組み込みサポートはありませんが、そのような例は数多くあります。) フィールドをエンコードおよびデコードする他の手段があれば、それも問題ありません。

サーバー側では、 Apache mod_rewrite rulesを使用していくつかの書き換えを行う必要があります。基本的に、httpd.conf のセクションまたはローカルの .htaccess ファイルに次のようなものが必要です。

# use mod_rewrite to enable passing encoded user name as a "Clean URL"
RewriteEngine On
# Define the rewrite base -- / says use what is immediately after the hostname part
RewriteBase /
# Send bare requests to index.php
RewriteRule ^$  index.php [L]
# Don't rewrite requests for files, directories, or symlinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
# Send requests to index.php, appending the portion following the RewriteBase
RewriteRule ^(.*)$ index.php?n=$1 [QSA,L]

最後に、元の URL を「http://www.example.com/johnsmithencoded」から「http://www.example.com/index.php?n=johnsmithencoded」に書き換えます。そこから、クエリを取得できます。 $_GET['n'] 経由でパラメータを取得し、必要に応じてデコードします。

于 2012-06-15T14:40:47.943 に答える