0

より明確にするために、私は php で新しい php ファイルを作成する方法を理解していますfwrite

//actually create the file now

$my_file=$post_title_edited . ".php";;

$fh= fopen($my_file, 'w');

fwrite($fh, $head);
fwrite($fh, $body);
fwrite($fh, $php);
fwrite($fh, $php2);
fwrite($fh, $php3);
fwrite($fh, $phpend);
fwrite($fh, $end); 
fclose($fh);

//redirect to created file
header("location:". $post_title_edited .".php");

この問題がなければ、すべて正常に動作するようになりました。

$php3='

session_start();

if(isset($_SESSION['login'])){
    $myusername = $_SESSION['login'];

    echo '  <div id="header-logedin">
              <h3>Hello ' . $myusername . '</h3>
              <a href="login/logout.php">Log out</a>
            </div><!--header-logedin-->
         ';
} else {
    echo $log;
}

ご覧のとおり、設定$php3を開始すると、最初のセッション呼び出しからのログインでアポストロフィによって中断されます。したがって、設定することはできず、新しいファイルに書き込むこともできません$php2。これも同じ問題があります。

私は何をしようとしていますか?簡単に言うと、ユーザーが index.php から投稿した情報は、SQL テーブルに対してデータがチェックされて、フォーラムのようにまだ存在していないことを確認した後、このコードによって作成された新しいページに投稿されます。これが複雑なものであることを本当に願っています。信じられないほど明白なことを見落としていません。前もって感謝します。

4

1 に答える 1

1

何をしようとしているのかは明確ではありませんが、エスケープの問題に遭遇しているようです。

アポストロフィが実際には文字列を終了しないようにするには、次のいずれかを実行できます。

  • 次のように、スラッシュでエスケープします。

    $s = 'string with \'single quotes\' inside'
    
  • 内部で二重引用符を使用します。

    $s = 'string with "double quotes" inside'
    
  • ヒアドキュメントを使用します。

    $s = <<<END
    This string uses a heredoc. So it doesn't use 'single' or "double" quotes.
    END;
    

編集: 何か賢明なことをしようとしているかどうかも確認してください。自問してみてください: 本当に新しい PHP ファイルを作成する必要があるのでしょうか? そうすることで、コードが複雑になりすぎていることは間違いありません。また、奇妙でほとんど検出できないバグや、おそらくセキュリティの問題もたくさんあります。

于 2012-10-25T23:21:55.063 に答える