2017-05-08 13 views
1

私はややPHPに慣れていませんし、フォーラムのスレッドとユーザープロフィールを私の作業中のWebサイトに保存しようとしています。ディレクトリのようにユーザーを保存するにはどうすればよいですか?

何か私は、人々が私のウェブサイト上のユーザーに、他の多くの人と同じようにアクセスできるようにするにはどうすればいいですか?https://example.org/user.php?id=521の代わりに、https://example.org/user/521のようなページにアクセスできますか?

私はPHP 7を使用しています。

答えて

0

クリーンURLを取得する方法はたくさんあります。 Laravel、CraftCMSなどのような最新のフレームワークは、それをすぐにサポートし、Webサーバーの設定を更新するためのドキュメントを表示します。

ライブラリーなしで実行したい場合は、Webサーバーがurl引数を1つのスラッグに転送して、PHPアプリケーションに渡すだけです。

その書き換えブロックの一例は、nginxのようになります:

location @app { 
       rewrite ^/(.*)$ /?u=$1; 
     } 

これは、ご使用の構成に応じて様々な方法で達成することができます。

PHPアプリケーションでは、基本的にちょうど$_GET['u']をキャッチし、それに応じて解析する必要があります。例えば

あなたが$incoming_request = explode("/", $_GET['u'])を行うと、​​は、「ユーザー」が含まれて見れば、あなたはあなたが、その後のあなたのチェックを実行することができます$incoming_request[1]でユーザーIDを送信しようとしていると仮定することができます。

これはすべて擬似コードですが、正しい方向に向けるのに十分なコンセプトでなければなりません。ここで

はPHPで要求を処理する例を示します。

// allowed page options via URL | no arguments defaults to landing 
$url_access_pagelist = [ 
    "user", 
]; 

//control all incoming url requests 
if(!isset($_GET['u'])) { 
    //URL has no path, set page landing 
    $current_page = 'landing'; 
} 
else { 
    // give non empty GET data a variable 
    $incoming_request = explode("/", strtolower($_GET['u'])); 
    // make sure incoming request is in the pagelist array) | switch() through page options as they exist 
    if(in_array($incoming_request[0], $url_access_pagelist)){ 
     switch($incoming_request[0]) { 
     case "user": 
     $current_page = "user"; 
     if(isset($incoming_request[1])) { 
      // this should be the user id 
      echo $incoming_request[0] . $incoming_request[1]; 
     } 
     break; 
     } 
    } 
} 
関連する問題