オブジェクトクラスを正しくインスタンス化できましたが、関数を呼び出す方法がわかりません。 は、ここに私のPHPコードです:PHPにGET変数を渡してクラスをインスタンス化して関数を呼び出す
$obj = new router();
class router{
public function __construct(){
if($_SERVER['REQUEST_METHOD'] == 'GET'){
echo "GET";
$page = 'index';
$funct = 'myfuncempty';
if (!empty ($_GET)){
$page = $_GET['page'];
$funct = $_GET['func'];
}
$obj = new $page(); //instantiating object with get from class
$obj->funct;
}
else{
echo "POST";
}
}
}
class index{
public function __construct(){
echo "hello I'm index";
}
public function myfunc(){
echo "yo";
}
public function myfuncempty(){
echo "empty get";
}
}
class login{
public function __construct(){
echo "hello I'm login";
}
public function loggedin(){
echo "you're logged in";
}
public function loggedinempty(){
echo "its empty";
}
}
そして、これは私がGET経由で変数を渡すために使用するHTMLフォームです:
<html>
<head></head>
<body>
<form action="index.php" method="POST"><input type ="text" name="page" id="page" /><input type="submit" /></form>
<form action="index.php" method="GET">Page:<input type="text" name="page" id="page" />Function:<input type="text" name="func" id="func" /><input type= "submit" />
</body>
</html>
私は、ページの中でインデックスを入力し、機能のためでMYFUNC、Iこの応答を取得:
GEThello I'm login Notice: Undefined property: login::$funct in /home/cr47/public_html/final_project/index.php on line 27
だから、それは正しく「ページ」を渡すと、オブジェクトをインスタンス化するが、それは正しくてmyfunc関数を呼び出すされませんされています。 アイデア
ギャングセキュリティホール。 – ThiefMaster
@ThiefMaster何が、マシンをハッキングしようとしているのですか?自分の妥協したクラスを作成し、それを$ _GETパラメータでインスタンス化しますか? – pp19dd
自分のアプリケーションにクラスがあるか、誰かが任意のメソッドを呼び出すことができる「安全」でないPHPクラスが組み込まれている可能性があります。たとえ何らかの議論に合格することができないと、リスクはちょうど中程度です。しかし、とにかく、少なくともスパムがログファイルに記録されたり、誰かにメールを送信したりするエラーを引き起こす可能性があります。 – ThiefMaster