0

練習用に小さなCMSを作っています。私は CKEDITOR を使用しており、テキストに %contactform% のようなものを記述できるようにしようとしています。その後、私の PHP 関数はそれを contactform に置き換えます。

テキストをフォームに置き換えることができました。しかし今、フォームがメールを送信するための PHP コードが必要です。私は file_get_contents(); を使用しています。しかし、それはphpコードを取り除いています。

include(); を使用しました。次に、別のファイルからphpコードを取得します。これは今のところ機能します。1つのファイルでやりたいです。

それで、phpコードを含むファイルからすべてのコンテンツを取得できますか?

*更新*

別の方法で説明しようと思います。

ヘッダーといくつかのコンテンツを作成できるページを CMS で作成できます。コンテンツには、%contactform% と書くことができます。

データベースからコンテンツを取得するとき、file_get_contents(); を使用して %contactform% を /inserts/contactform.php のコンテンツに置き換えます。ここで、HTML と私の php コードでフォームを作成します。

if(isset($_POST['submit'])) {
  echo 'Now my form is submitted!';
}

<form method="post">
  <input type="text" name="email">
  <input type="submit" name="submit">
</form>

ここで、フォームとアクティブなphpコードを取得することを期待していました。しかし、フォームで送信ボタンを押しても、php コードは起動しません。

使用できるようにしたいphpコードを表示したくありません

4

3 に答える 3

1

はい...

$content = file_get_contents( 'path to your file' );

印刷してみてください

echo htmlspecialchars( $content );
于 2012-12-30T13:44:39.847 に答える
1

私はまだ推測する必要がありますが、あなたの更新から、あなたは最終的に、データベースからのコンテンツを含む変数になり%contactform%file_get_contents('/inserts/contactform.php').

何かのようなもの:

$contentToOutput = str_replace(
  '%contactform%',
  file_get_contents('/inserts/contactform.php'),
  $contentFromDatabase
);

echoその変数を出力すると、その内容がそのまま送信されます。PHPは実行されません。

多くの場合、リスクが伴いますが、自分が何をしているのかわかっている場合は、evalを使用して php コードを解析できます。このような混合コードでは、次のようにしたいかもしれません。

ob_start();
eval('; ?>' . $contentToOutput); 
$parsedContent = ob_get_clean();

$parsedContentコードを実行した後の結果が含まれているはずです。これで、ユーザーに送信したり、好きな方法で処理したりできます。

もちろん、含まれているもの$contentToOutputが有効な php コード (または php と php タグおよびテキストの有効な混合物) であることを確認する必要があります。

これは symfony のTemplating/PhpEngineクラスへのリンクです。evaluateメソッドを見て、実際のコードで上記の例を確認してください。

于 2012-12-30T14:41:02.960 に答える
0

修正された質問を読むと、答えは「ここから先には行けない」だと思います。あなたが遭遇すると私が考えるものを説明しようとしましょう。

まず、HTTP の性質とクライアント/サーバー モデルについて考えてみましょう。クライアントはリクエストを行い、サーバーはレスポンスを行います。各リクエストはアトミック、完全、ステートレスであり、各レスポンスは完全で、通常は瞬時です。そして、それはそれの終わりです。サーバーは切断され、クライアントが新しいリクエストを行うまで「スリープ」状態に戻ります。

私がウェブページをリクエストしたとしましょう。PHP スクリプトが実行され、応答ドキュメント (おそらく HTML) が準備され、サーバーがそのドキュメントをブラウザーに送信します。ドキュメントに HTML フォームが含まれている場合、フォームをaction=スクリプトの URL に送信できます。しかし、フォームを送信すると、サーバーに戻る新しいリクエストが作成されます。

あなたの設計を理解しているように、HTML フォームと PHP アクション スクリプトの両方を %contactform% 文字列の場所にある CKeditor のテキスト領域に配置する予定です。これは、フォームをサーバーに送信するクライアントに提示され、サーバーで PHP スクリプトが実行されます。それがうまくいくとは思えませんし、うまくいく方法を見つけたとしても、基本的には「外部入力を受け入れて PHP で実行します」と言っているだけです。それは私にとって容認できないセキュリティ上の露出を表します.

技術的な詳細から離れて、達成しようとしていることを平易な言葉で教えていただければ、デザイン パターンに関する提案を提供できるかもしれません。

于 2012-12-30T14:00:16.413 に答える