1

HTML でフォームを作成しようとしています。フォームを送信すると、フォームに入力されたデータを使用して新しい Web ページが自動的に生成されます。通常、MATLAB と Python のユーザーなので、最初に試してみました。Matlab はデータを解析して新しい .txt ファイルに保存しますが、.html ファイルには保存しません。Python もほとんど同じでした。検索した結果、PHP を使用してフォーム データから新しいページを作成するという提案に出会いました。(誰かが php を使用して、ユーザー名、電子メール、および写真を含むユーザー Web ページを作成していました。これを自分のニーズに合わせて調整しようとしましたが、思ったように新しいページが生成されません。代わりに、一部を表示するだけです。 PHPコードの. これは私が作ったフォームです:

<form action="htmlData.php" method="post"> 

Product Name: 
<input name="Name" size="20" type="text">
<br><br>

Project Lead Name:
<input name="PLname" size="20" type="text"> <br><br>

Team-members: <br>
<textarea name="Team_members" rows=10 cols=40> </textarea> <br><br>

Product Type: <br>
<input name="Product_Type" size="20" type="text"> <br><br>

Description: <br>
<textarea name="Description" rows=10 cols=40 type="text"> </textarea>
<br>

<br> <br>



<input value="Submit" type="submit" name="formSubmit">
<input value="Reset" type="reset">
<input value="Help" type="button" onclick="window.location.href='problems.html'">
</form>

...これが htmlData.php という名前の PHP ファイルです。

ob_start();  
$Name = $_POST['Name'];
$PLname= $_POST['PLname'];
$Team_members= $_POST['Team_members'];
$Product_type= $_POST['Product_type'];
$Description= $_POST['Description']; 
$html = <<<HEREDOC
     Product Name: $Name <br>
     Project Lead: $PLname <br>
     Team Members: $Team_members <br> <br>
     Product Type: $Product_type <br>
     Description: $Description
     HEREDOC;  
file_put_contents('newPage.htm', $html); 
header()redirect.header('location: newPage.html')

ユーザーが送信をクリックすると、データから新しいページが生成され、ユーザーが新しく作成されたページに移動するようにするには、何を変更する必要がありますか? これは私が持っているもので可能ですか、それとも別の言語の使用を検討する必要がありますか?

4

6 に答える 6

1

php コードが表示される場合は、次のことを意味します。 1. php がインストールされていません。2. Apache などの http サーバーがインストールされています。

上記の 2 つの条件が満たされていても、コードは有効な PHP コードではなく、動作しません。

あなたはまだ PHP に慣れていません。動的なページを作成する前に、基本に戻って学習する必要があります。

于 2012-06-18T18:01:57.797 に答える
1

代わりに、PHP コードの一部を表示するだけです。

次のいずれかのようです。

  • サーバーにPHPをインストールしましたか?
  • サーバーは、処理する .php ページを渡すように構成されていますか?

ブラウザに PHP コードを表示することは、Web サーバーが正しく処理していないことを意味するため、こちらを参照することをお勧めします。

インストールされたと思ったらphpinfo() 、 docs を参照して実行してください。

于 2012-06-18T17:59:39.747 に答える
1

PHP と Python (おそらく MATLAB も) で可能です。

PHP コードを考えると、いくつかの小さな問題があります。まず、HEREDOCは行頭で終了する必要があります (終了 HEREDOC の前に空白を入れることはできません)。

次に、リダイレクトする PHP コードが無効です。これらの変更を試してください:

<?php

$Name = $_POST['Name'];
$PLname= $_POST['PLname'];
$Team_members= $_POST['Team_members'];
$Product_type= $_POST['Product_type'];
$Description= $_POST['Description'];

$html = <<<HEREDOC
     Product Name: $Name <br>
     Project Lead: $PLname <br>
     Team Members: $Team_members <br> <br>
     Product Type: $Product_type <br>
     Description: $Description
HEREDOC;  
file_put_contents('newPage.htm', $html); 

header('location: newPage.html');
exit;

次に発生する可能性のある問題は、 に書き込めないことnewPage.htmです。フルパス (例: /home/yoursite/public_html/files/newPage.htm) を指定する必要がある場合があります。

ディレクトリが Web サーバーによって書き込み可能であることを確認する必要があります (Web サーバーは、ファイルの所有者とは異なるユーザーとして実行されることがよくあります)。

それが役立つことを願っています。

于 2012-06-18T18:00:55.240 に答える
0

新しいファイル宣言に「l」がありません:

file_put_contents('newPage.htm', $html);

また、newPage.html ファイルを物理的に作成してプロジェクト ディレクトリに配置し、ページが表示されるかどうかを確認してください。この場合、PHP がインストールされているかどうか、およびサーバーが投稿を処理するように構成されているかどうかを確認します。通常、デフォルトでは post または get を処理するように設定されていますが、通常は両方ではありません。

于 2012-06-18T18:02:02.373 に答える
0

元の問題を正確に解決しているわけではありませんが、これで範囲を超えていないことを願っています:

問題は、データベースを PHP などの言語と組み合わせて使用​​することで解決されることがほとんどです。フォーム送信後にこの情報をデータベースに保存すると、newPage.htm で GET パラメータを受け入れ、データベースから対応するデータを動的に表示する必要があります。例: newPage.html?id=245 は、その ID をその要求を処理する PHP コードに配信します。PHP はその ID を使用してデータベースに適切な情報を照会し、それをページに表示します。こうすることで、フォームの送信ごとに 1 つのファイルを作成する必要がなくなり、フォーム データの管理が容易になります。詳細については、http: //www.freewebmasterhelp.com/tutorials/phpmysqlなどを確認してください。

心に留めておくべきもう 1 つの側面は、セキュリティです。現在のコードは、サーバー上のファイルに直接ユーザー入力を入れます。これは重大なセキュリティ上の脆弱性です。ユーザー入力をエスケープすることをお勧めします。

于 2012-06-18T18:04:51.983 に答える
0
  1. 新しいページを作成する必要がない場合は、PHP コードの先頭で、ob_start() を削除し、追加します。

if(isset($_REQUEST['formSubmit'])){ .... .... }

送信を押すと、ページが自動的に作成されます。

于 2012-06-18T18:10:28.920 に答える