あなたの質問から、あなたがしたいことが完全にはっきりしていないので、私は私の答えを分けています。
私の知る限りは、URLからセッション変数を設定するには、no 直接可能性はありません知っている
URL
からセッション変数の設定。これは、セッションIDによってのみ参照されるサーバー側のデータとして、セッション全体の概念を妥協するでしょう。
users.phpというスクリプトがあるとします。基本的にhttp://[...]/account/users.php?username=[...]
と呼ぶことができます。次のスクリプトを使用すると、$_GET
スーパーグローバルの変数を$_SESSION
スーパーグローバルに割り当てることができます。
<?php
session_start();
$_SESSION['username'] = $_GET['username']
[...] //whatever you'll want to do
?>
URLを書き換えると、URLを簡略化してhttp://[...]/account/users/[...]
とすることができます。
とにかく、自分が行っていることを知っていることを確認する必要があります。とにかくユーザー名を渡すと、$_SESSION
のメリットは表示されません。 そしていくつかの入力検証をすることができます。これにより、それぞれのユーザーがアクセスする必要があるリソースにアクセスすることはできません。
は本当にスーパーグローバル
$_SESSION
、私は上記に書いた方法でのみ
$_GET
を必要とするユーザー
あなただけがいないユーザーのページを表示したいと思います
を表示します。次のスクリプトを検討してください。
<?php
$user = get_user_by_name($_GET['username']);
display_user_page($user);
?>
セッションは不要です。 dbからユーザーのデータをオンザフライでロードし、ユーザーページをプリントアウトするだけです。 URLでこの引用
変数に基づいてURL
にユーザー名を渡す
はそれだけでルックスのためにあるだろう何もしないだろう。
これはむしろあなたがしたいことだと思います。そして、あなたはこの種の依存をどのように達成することができますか?
PHPスクリプトのどこかにリンクを生成すると、これは簡単です。リンク内のURLに$_SESSION['username']
を追加して、書き換えルールを作成すると、account/users
にリダイレクトされます。
http://[...]/account/users
に電話して、ブラウザをhttp://[...]/account/users/username
に移動したい場合は、もう少し複雑です。まず、http://[...]/account/users/username
を何らかの種類のhttp://[...]/account/users.php?username=username
に書き換える書き換えルールが必要です。ユーザ名が空の場合は、現在のユーザ名を$_SESSION
から取得し、ブラウザに正しいアドレスを指すように<meta http-equiv="refresh" content="0; URL=http://[...]/account/users/$username">
タグを作成します。ユーザー名が空でない場合は、ユーザーページを表示するだけです。
これは$ _GETを使用して行うことができますが、セッション変数を使ってどのようにすればよいでしょうか?
変数はまったく使用されていないので、実際には$_GET
を使用せずにすべてを使用できます。あなたは、2つのスクリプト
// users_redirect.php
<?php
start_session();
$username = $_SESSION['username'];
echo "<meta http-equiv='refresh' content='0; URL=http://[...]/account/users/$username'>";
?>
とユーザーのページを表示するために第2の1を持っているよあなたがコールするサーバーに設定し、正しいURL書き換えルールを持っている必要がありますもちろん
<?php
$user = get_user_by_name($_SESSION['username']);
display_user_page($user);
?>
正しいスクリプト。
ただ、サイドノート
あなたは心によって異なる概念を学ぶ必要があります。 GET
およびSESSION
は、異なるだけでなく、根本的に異なる。まるであなたがここでかなり混じっているように思えますし、あなたは完全に物事をねじにしないように基本を得るべきです。
あなたがURLを作成しているコードを共有しますか? – C2486
あなたは何を意味するのか分かりませんが、現在私はhttp:// localhost/account/usersに直接リンクしています – EthanLewis
あなたは2つのことをしなければなりません:1.あなたがURLを扱うコードで '/ users/'、それは美容のみであり、2.あなたがURLを生成するコードでは、ユーザーの名前を追加します。この2つのことをどこで行うのかわからないのであれば、私たちはお手伝いできません。 – Nanne