私はブログ投稿を投稿するためのタイトル/エントリーフォームを持っています。送信時には、dbの同じタイトル(これは許可されていません)を確認し、エラーを返してタイトルを変更するように指示します。私は、POSTの後に両方のフィールドを埋めるようにしておきたいと思います。なぜなら、ユーザはエントリ全体を書き直す必要がないからです。ただし、タイトルのみを保持します。 session_startはheader.phpに存在します。 SQLインジェクションの脆弱なセクションは無視してください。POST後に複数のフィールドを保持する方法は?
<?php
require("connect.php");
require("header.php");
if(isset($_POST['post'])){
$title = $_POST['blogtitle'];
$entry = $_POST['blogentry'];
$author = $_SESSION['username'];
$newBlogPostQuery = "SELECT * FROM contents WHERE title='$title'";
$newBlogPostResult = mysqli_query($conn, $newBlogPostQuery) or die("Error:".mysqli_error($conn));
$newBlogPostRow = mysqli_fetch_array($newBlogPostResult, MYSQLI_ASSOC);
if(mysqli_num_rows($newBlogPostResult) ==1){
$blogPostExists = TRUE;
}
else{
$blogQuery = mysqli_query($conn, "INSERT INTO contents (timestamp, title, entry, authorName) VALUES (now(), '$title', '$entry', '$author')");
if($blogQuery){
header("Location: index.php");
}
}
}
?>
<div class="flex-enable flex-center blog-body">
<?php if(isset($blogPostExists)&&$blogPostExists){
echo '<div class="exception" style="margin: 0;"><span class="small-white-subtitle">Please use a different title.</div>';
}
?>
<form class="flex-enable flex-column" method="POST">
<label for="blogtitle"><span class="blog-insert-title">Title</span></label>
<input class="blog-input-text small-white-title" id="blogtitle" type="text" name="blogtitle" placeholder="Your title" value="<?php echo isset($_POST['blogtitle']) ? $_POST['blogtitle']:''; ?>">
<label for="blogentry"><span class="blog-insert-title">Blog post</span></label>
<textarea class="blog-input-text blog-insert-entry" id="blogentry" type="text" rows="20" name="blogentry" placeholder="Write something amazing here..." value="<?php echo isset($_POST['blogentry']) ? $_POST['blogentry']:''; ?>"></textarea>
<input class="form-button small-white-title" type="submit" name="post" value="Post">
</form>
</div>
* *任意のSQLインジェクション脆弱セクションを無視してください - それらは無視すべきではありません! – Philipp
私はユニ・アサインをしており、それらを解決することは必須条件ではありません(これまでのところ)。私はすべて、良いコーディングのためのものですが、必要な機能が達成された後でなければなりません。 – mechanicarts
私はあなたが講師であれば、私は仕事を解決するためにこれを必要とするでしょう - あなたが安全でないWebアプリケーションを構築するよう教えるようです。 – Philipp