2017-05-11 9 views
1

私はSlimフレームワークで新しく、現在はログインと登録用のサービスを作成しています。PHPのスリムアプリケーションが実行されていませんか?

database.phpのlibにデータベースファイルを作成し、そのファイルに次のコードを追加してユーザー用のデータを作成しました。

<?php 
use \Psr\Http\Message\ServerRequestInterface as Request; 
use \Psr\Http\Message\ResponseInterface as Response; 

require 'lib/mysql.php'; 

class DatabseLayer{ 
    public function __constructor(){ 

    } 


    public function isUserExist($email, $password){ 
     $dbObject = new DbConnect(); 
     $sql = "Select * from users where email = $email and password = $password limit 1"; 
     $result = mysqli_query($dbObject->getDb(), $sql); 
     if(count($result) > 0){ 
      return true; 
     } 
     return false;  
    } 
} 
?> 

はその後、私はindex.phpのファイルに次のコード

<?php 
error_reporting(E_ALL); 

use \Psr\Http\Message\ServerRequestInterface as Request; 
use \Psr\Http\Message\ResponseInterface as Response; 

require 'vendor/autoload.php'; 
//require 'lib/mysql.php'; 


require 'lib/database.php'; 


$app = new \Slim\App; 

$app->get('/:email/:password', function($email, $password){ 

    $password = md5($password); 

    $databaseObject = new DatabaseLayer(); 
    $isRegistered = $databaseObject->isUserExist($email, $password); 

    $app = SlimSlim::getInstance(); 

    if($isRegistered){ 
     $app->response->setStatus('200'); 
     $app->response->headers->set('Content_Type', 'application/json'); 
     echo json_encode(Array('isLogin' => '1')); 

    }else{ 
     echo json_encode(Array('isLogin' => '0')); 
    } 

}); 


$app->run(); 

?> 

を入れていると私はこのURL

http://localhost/slim/[email protected]/11111

または

http://localhost/slim/index.php/[email protected]/11111

でログインしようとすると、

私にはページが見つかりませんでした。私はそれ以上のアイデアを持っていないので誰も助けてくれるはずです。

+0

mysqlインジェクションについて読み、プリペアドステートメントまたは少なくともエスケープ値を使用してからクエリに使用してください。また、get URLにログイン資格情報を持つことは悪い考えです。 REFERERヘッダーにサードパーティのウェブサイトに表示され、ログ、ブラウザの履歴などに表示される –

+0

あなたはどのバージョンのスリムを使用していますか?あなたは一緒に動作しないSlim 2とSlim 3のコードを混在させているようです。 – meun5

答えて

0

Slim 3を使用している間は、Slim 2の方法でルートを宣言しています。アプリケーションには、実際にはwebsite.com/:email/:passwordというルートが1つしかありません。したがって、404エラーが発生します。あなたはcorresponding section of Slim documentationで宣言したルートの方法についての詳細を読むことができます

'/{email}/{password}' 

'/:email/:password' 

は、あなたがそれらをこのように宣言する必要があります。

スリム3は、このように速いルートとの代わりに指定するプレースホルダを使用していますまたはnikic/fastRoute github repository

関連する問題