2017-01-18 11 views
-2

私のウェブサイトのユーザーには、下のURLからアクセスできるすべての詳細が記載されたホームページがあります。すべての詳細はセッション変数で集められるので、変数はURLに渡されませんが、私はそれを望んでいません。URLにSESSION変数を追加する

URLはこの

http://localhost/account/users

のように見える私はそれは例えば、この

http://localhost/account/users/$_SESSION["username"]

よう

http://localhost/account/users/ethan

を見てみたいIこれは$_GETを使って行うことができますが、セッション変数を使ってどのようにすればよいでしょうか? URL内の変数は、ルックには何もしません。

+0

あなたがURLを作成しているコードを共有しますか? – C2486

+0

あなたは何を意味するのか分かりませんが、現在私はhttp:// localhost/account/usersに直接リンクしています – EthanLewis

+0

あなたは2つのことをしなければなりません:1.あなたがURLを扱うコードで '/ users/'、それは美容のみであり、2.あなたがURLを生成するコードでは、ユーザーの名前を追加します。この2つのことをどこで行うのかわからないのであれば、私たちはお手伝いできません。 – Nanne

答えて

0

あなたの質問から、あなたがしたいことが完全にはっきりしていないので、私は私の答えを分けています。

私の知る限りは、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は、異なるだけでなく、根本的に異なる。まるであなたがここでかなり混じっているように思えますし、あなたは完全に物事をねじにしないように基本を得るべきです。

関連する問題