<?phprequire 'lib/core/DBAccess.class';require 'lib/core/Object.class';require 'action/default/WebBase.class.php';require 'action/default/WebLoginBase.class.php';require 'config.php';//print_r($_SERVER);exit;$para=array();if(isset($_SERVER['PATH_INFO'])){ $para=explode('/', substr($_SERVER['PATH_INFO'],1)); if($control=array_shift($para)){ if(count($para)){ $action=array_shift($para); }else{ $action=$control; $control='index'; } }else{ $control='index'; $action='main'; }}else{ $control='index'; $action='main';}$control=ucfirst($control);if(strpos($action,'-')!==false){ list($action, $page)=explode('-',$action);}$file=$conf['action']['modals'].$control.'.class.php';if(!is_file($file)) notfound('找不到控制器');try{ require $file;}catch(Exception $e){ print_r($e); exit;}if(!class_exists($control)) notfound('找不到控制器1');$jms=new $control($conf['db']['dsn'], $conf['db']['user'], $conf['db']['password']);$jms->debugLevel=$conf['debug']['level'];if(!method_exists($jms, $action)) notfound('方法不存在');$reflection=new ReflectionMethod($jms, $action);if($reflection->isStatic()) notfound('不允许调用Static修饰的方法');if(!$reflection->isFinal()) notfound('只能调用final修饰的方法');$jms->controller=$control;$jms->action=$action;$jms->charset=$conf['db']['charset'];$jms->cacheDir=$conf['cache']['dir'];$jms->setCacheDir($conf['cache']['dir']);$jms->actionTemplate=$conf['action']['template'];$jms->prename=$conf['db']['prename'];$jms->title=$conf['web']['title'];if(method_exists($jms, 'getSystemSettings')) $jms->getSystemSettings();//if($jms->settings['switchWeb']=='0'){// $jms->display('close-service.php');// exit;//}if(isset($page)) $jms->page=$page;if($q=$_SERVER['QUERY_STRING']){ $para=array_merge($para, explode('/', $q));}if($para==null) $para=array();$jms->headers=getallheaders();if(isset($jms->headers['x-call'])){ // 函数调用 header('content-Type: application/json'); try{ ob_start(); echo json_encode($reflection->invokeArgs($jms, $_POST)); ob_flush(); }catch(Exception $e){ $jms->error($e->getMessage(), true); }}elseif(isset($jms->headers['x-form-call'])){ // 表单调用 $accept=strpos($jms->headers['Accept'], 'application/json')===0; if($accept) header('content-Type: application/json'); try{ ob_start(); if($accept){ echo json_encode($reflection->invokeArgs($jms, $_POST)); }else{ json_encode($reflection->invokeArgs($jms, $_POST)); } ob_flush(); }catch(Exception $e){ $jms->error($e->getMessage(), true); }}elseif(strpos($jms->headers['Accept'], 'application/json')===0){ // AJAX调用 header('content-Type: application/json'); try{ //echo json_encode($reflection->invokeArgs($jms, $para)); echo json_encode(call_user_func_array(array($jms, $action), $para)); }catch(Exception $e){ $jms->error($e->getmessage()); }}else{ // 普通请求 header('content-Type: text/html;charset=utf-8'); //$reflection->invokeArgs($jms, $para); call_user_func_array(array($jms, $action), $para);}$jms=null;function notfound($message){ header('content-Type: text/plain; charset=utf8'); header('HTTP/1.1 404 Not Found'); die($message);}
PHPプログラムのインストールエラー
他の人のウェブサイトでは正常に認証コードが表示されますが、私も彼と同じプログラムをインストールしましたが、[メソッドが存在しません] と表示されました。
if(!class_exists($control)) notfound('コントローラー 1 が見つかりません');
$jms=new $control($conf['db']['dsn'], $conf[ 'db ']['ユーザー'], $conf['db']['パスワード']);
$jms->debugLevel=$conf['デバッグ']['レベル'];
if(! $jms, $action)) notfound('メソッドが存在しません');
$reflection=new ReflectionMethod($jms, $action);
if($reflection->isStatic()) notfound('呼び出しは許可されていません変更されたメソッド');
if(!$reflection->isFinal()) notfound('最終的に変更されたメソッドのみを呼び出すことができます');
http://vip4.zrd-w.com これは他の人の Web サイトです
同じプログラムでデータベース接続も正しいので、プログラムの問題ではないのかもしれませんが、PHPは全く分からないので、これが原因なのか分かりません?
以下は完全なコードです。
require 'lib/core/DBAccess.class';
require 'action/default/WebBase.class.php';
require 'action/default'; /WebLoginBase.class.php';
'config.php' が必要です
//print_r($_SERVER); 終了
if(isset($_SERVER['PATH_INFO']) )){
$para=explode('/', substr($_SERVER['PATH_INFO'],1));
if($control=array_shift($para)){
if(count($para)){
$action=array_shift($para);
}else{
$control='index';
$control='index'; ;
}
}else{
$control='index';
}
$control=ucfirst($control)
if(strpos($action,'-'); =false){
list($action, $page)=explode('-',$action);
}
$file=$conf['action']['modals'].$control.'.class .php';
if(!is_file($file)) notfound('コントローラーが見つかりません');
require $file;
print_r($e); ;
}
if(!class_exists($control)) notfound('コントローラー 1 が見つかりません');
$jms=new $control($conf['db']['dsn'], $ conf['db ']['ユーザー'], $conf['db']['パスワード']);
$jms->debugLevel=$conf['デバッグ']['レベル']
if (!method_exists( $jms, $action)) notfound('メソッドが存在しません');
$reflection=new ReflectionMethod($jms, $action)) notfound('静的ではない変更されたメソッドの呼び出しが許可されています');
if(!$reflection->isFinal()) notfound('最終的に変更されたメソッドのみを呼び出すことができます');
$jms->controller=$control; >action=$action;
$jms->charset=$conf['db']['charset']
$jms->cacheDir=$conf['cache']['dir'] ;
$jms->setCacheDir($conf['cache']['dir']);
$jms->actionTemplate=$conf['action']['template'];
$jms-> =$conf['db']['prename'];
$jms->title=$conf['web']['title'];
if(method_exists($jms, 'getSystemSettings')) $ jms ->getSystemSettings();
//if($jms->settings['switchWeb']=='0'){
// $jms->display('close-service.php') ;
// 終了
//}
if(isset($page)) $jms->page=$page;
if($q=$_SERVER['QUERY_STRING']){
$para= array_merge ($para,explode('/', $q));
}
if($para==null) $para=array();
$jms->headers=getallheaders(); isset($jms->headers['x-call'])){
// 関数呼び出し
header('content-Type: application/json');
try{
ob_start();リフレクション->invokeArgs($jms, $_POST));
ob_flush()
}catch(Exception $e){
$jms->error($e->getMessage(), true);
}elseif(isset($jms->headers['x-form-call'])){
// フォーム呼び出し
$accept=strpos($jms->headers['Accept'], ' application /json')===0;
if($accept) header('content-Type: application/json');
try{
ob_start(){
echo json_encode($reflection -) >invokeArgs($jms, $_POST));
}else{
json_encode($reflection->invokeArgs($jms, $_POST));
}
ob_flush()
}catch(Exception $e);
$jms->error($e->getMessage(), true);
}
}elseif(strpos($jms->headers['Accept'], 'application/json')=== 0 ){
// AJAX 呼び出し
header('content-Type: application/json');
try{
//echo json_encode($reflection->invokeArgs($jms, $para));
echo json_encode(call_user_func_array(array($jms, $para)) action), $para));
}catch(Exception $e){
$jms->error($e->getmessage());
}
}else{
// 通常のリクエスト
header(' content-Type: text/html;charset=utf-8');
//$reflection->invokeArgs($jms, $para);
call_user_func_array(array($jms, $action), $para); }
$jms=null;
function notfound($message){
header('content-Type: text/plain; charset=utf8');
header('HTTP/1.1 404 Not Found'); $message);
}
この問題の解決を手伝ってください、ありがとう。
ディスカッションへの返信 (解決策)
<?phprequire 'lib/core/DBAccess.class';require 'lib/core/Object.class';require 'action/default/WebBase.class.php';require 'action/default/WebLoginBase.class.php';require 'config.php';//print_r($_SERVER);exit;$para=array();if(isset($_SERVER['PATH_INFO'])){ $para=explode('/', substr($_SERVER['PATH_INFO'],1)); if($control=array_shift($para)){ if(count($para)){ $action=array_shift($para); }else{ $action=$control; $control='index'; } }else{ $control='index'; $action='main'; }}else{ $control='index'; $action='main';}$control=ucfirst($control);if(strpos($action,'-')!==false){ list($action, $page)=explode('-',$action);}$file=$conf['action']['modals'].$control.'.class.php';if(!is_file($file)) notfound('找不到控制器');try{ require $file;}catch(Exception $e){ print_r($e); exit;}if(!class_exists($control)) notfound('找不到控制器1');$jms=new $control($conf['db']['dsn'], $conf['db']['user'], $conf['db']['password']);$jms->debugLevel=$conf['debug']['level'];if(!method_exists($jms, $action)) notfound('方法不存在');$reflection=new ReflectionMethod($jms, $action);if($reflection->isStatic()) notfound('不允许调用Static修饰的方法');if(!$reflection->isFinal()) notfound('只能调用final修饰的方法');$jms->controller=$control;$jms->action=$action;$jms->charset=$conf['db']['charset'];$jms->cacheDir=$conf['cache']['dir'];$jms->setCacheDir($conf['cache']['dir']);$jms->actionTemplate=$conf['action']['template'];$jms->prename=$conf['db']['prename'];$jms->title=$conf['web']['title'];if(method_exists($jms, 'getSystemSettings')) $jms->getSystemSettings();//if($jms->settings['switchWeb']=='0'){// $jms->display('close-service.php');// exit;//}if(isset($page)) $jms->page=$page;if($q=$_SERVER['QUERY_STRING']){ $para=array_merge($para, explode('/', $q));}if($para==null) $para=array();$jms->headers=getallheaders();if(isset($jms->headers['x-call'])){ // 函数调用 header('content-Type: application/json'); try{ ob_start(); echo json_encode($reflection->invokeArgs($jms, $_POST)); ob_flush(); }catch(Exception $e){ $jms->error($e->getMessage(), true); }}elseif(isset($jms->headers['x-form-call'])){ // 表单调用 $accept=strpos($jms->headers['Accept'], 'application/json')===0; if($accept) header('content-Type: application/json'); try{ ob_start(); if($accept){ echo json_encode($reflection->invokeArgs($jms, $_POST)); }else{ json_encode($reflection->invokeArgs($jms, $_POST)); } ob_flush(); }catch(Exception $e){ $jms->error($e->getMessage(), true); }}elseif(strpos($jms->headers['Accept'], 'application/json')===0){ // AJAX调用 header('content-Type: application/json'); try{ //echo json_encode($reflection->invokeArgs($jms, $para)); echo json_encode(call_user_func_array(array($jms, $action), $para)); }catch(Exception $e){ $jms->error($e->getmessage()); }}else{ // 普通请求 header('content-Type: text/html;charset=utf-8'); //$reflection->invokeArgs($jms, $para); call_user_func_array(array($jms, $action), $para);}$jms=null;function notfound($message){ header('content-Type: text/plain; charset=utf8'); header('HTTP/1.1 404 Not Found'); die($message);}
ログイン後にコピー
<?phprequire 'lib/core/DBAccess.class';require 'lib/core/Object.class';require 'action/default/WebBase.class.php';require 'action/default/WebLoginBase.class.php';require 'config.php';//print_r($_SERVER);exit;$para=array();if(isset($_SERVER['PATH_INFO'])){ $para=explode('/', substr($_SERVER['PATH_INFO'],1)); if($control=array_shift($para)){ if(count($para)){ $action=array_shift($para); }else{ $action=$control; $control='index'; } }else{ $control='index'; $action='main'; }}else{ $control='index'; $action='main';}$control=ucfirst($control);if(strpos($action,'-')!==false){ list($action, $page)=explode('-',$action);}$file=$conf['action']['modals'].$control.'.class.php';if(!is_file($file)) notfound('找不到控制器');try{ require $file;}catch(Exception $e){ print_r($e); exit;}if(!class_exists($control)) notfound('找不到控制器1');$jms=new $control($conf['db']['dsn'], $conf['db']['user'], $conf['db']['password']);$jms->debugLevel=$conf['debug']['level'];if(!method_exists($jms, $action)) notfound('方法不存在');$reflection=new ReflectionMethod($jms, $action);if($reflection->isStatic()) notfound('不允许调用Static修饰的方法');if(!$reflection->isFinal()) notfound('只能调用final修饰的方法');$jms->controller=$control;$jms->action=$action;$jms->charset=$conf['db']['charset'];$jms->cacheDir=$conf['cache']['dir'];$jms->setCacheDir($conf['cache']['dir']);$jms->actionTemplate=$conf['action']['template'];$jms->prename=$conf['db']['prename'];$jms->title=$conf['web']['title'];if(method_exists($jms, 'getSystemSettings')) $jms->getSystemSettings();//if($jms->settings['switchWeb']=='0'){// $jms->display('close-service.php');// exit;//}if(isset($page)) $jms->page=$page;if($q=$_SERVER['QUERY_STRING']){ $para=array_merge($para, explode('/', $q));}if($para==null) $para=array();$jms->headers=getallheaders();if(isset($jms->headers['x-call'])){ // 函数调用 header('content-Type: application/json'); try{ ob_start(); echo json_encode($reflection->invokeArgs($jms, $_POST)); ob_flush(); }catch(Exception $e){ $jms->error($e->getMessage(), true); }}elseif(isset($jms->headers['x-form-call'])){ // 表单调用 $accept=strpos($jms->headers['Accept'], 'application/json')===0; if($accept) header('content-Type: application/json'); try{ ob_start(); if($accept){ echo json_encode($reflection->invokeArgs($jms, $_POST)); }else{ json_encode($reflection->invokeArgs($jms, $_POST)); } ob_flush(); }catch(Exception $e){ $jms->error($e->getMessage(), true); }}elseif(strpos($jms->headers['Accept'], 'application/json')===0){ // AJAX调用 header('content-Type: application/json'); try{ //echo json_encode($reflection->invokeArgs($jms, $para)); echo json_encode(call_user_func_array(array($jms, $action), $para)); }catch(Exception $e){ $jms->error($e->getmessage()); }}else{ // 普通请求 header('content-Type: text/html;charset=utf-8'); //$reflection->invokeArgs($jms, $para); call_user_func_array(array($jms, $action), $para);}$jms=null;function notfound($message){ header('content-Type: text/plain; charset=utf8'); header('HTTP/1.1 404 Not Found'); die($message);}
config.php
<?php$conf['debug']['level']=5;$conf['db']['dsn']='mysql:host=localhost;dbname=kelake';$conf['db']['user']='root';$conf['db']['password']='123456';$conf['db']['charset']='utf8';$conf['db']['prename']='ssc_';$conf['cache']['expire']=0;$conf['cache']['dir']='_cache/';$conf['url_modal']=2;$conf['action']['template']='inc/default/';$conf['action']['modals']='action/default/';$conf['member']['sessionTime']=15*60;error_reporting(E_ERROR &~E_NOTICE);ini_set('date.timezone','asia/shanghai');?>
に変更します。
if(!method_exists($jms, $action)) notfound("$jms::$action メソッドが存在しません");
もう一度実行して確認してください
if(!method_exists($jms, $action)) notfound("$jms::$action メソッドが存在しません"); に変更します
もう一度実行して確認します
空白のページ。
if(!method_exists($jms, $action)) notfound('メソッドが存在しません');
に変更します
if(!method_exists($jms, $action)) notfound("$action メソッド存在しない" ;何が足りないのでしょうか?ありがとう。
http://yun.baidu.com/s/1eQxelqE
自分で解決しました。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

ReactPhpの詳細な解釈の非ブロッキング機能の公式紹介は、多くの開発者の質問を呼び起こしました。
