Ich habe einen Titel/ein Anmeldeformular zum Einreichen eines Blogposts. Beim Senden sucht es nach dem gleichen Titel in der Datenbank (was nicht erlaubt ist) und gibt dann einen Fehler zurück, um Ihnen zu sagen, dass Sie Ihren Titel ändern müssen. Ich möchte, dass beide Felder nach dem POST gefüllt bleiben, denn duh, ein Benutzer sollte nicht den ganzen Eintrag neu schreiben müssen. Es behält jedoch nur den Titel. session_start existiert in der header.php. Bitte ignorieren Sie alle anfälligen SQL-Injektionen.Wie behalten Sie mehrere Felder nach dem POST gefüllt?
<?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>
* ignorieren Sie bitte jede mögliche SQL-Injection-gefährdeten * - sie ignoriert nie werden sollte! – Philipp
Ich mache eine Uni-Aufgabe, und diese zu lösen, ist (bisher) keine Voraussetzung. Ich bin alles für gute Programmierpraktiken, aber nur wenn die notwendige Funktionalität erreicht ist. – mechanicarts
Wenn ich Sie Dozent bin, würde ich dies eine Voraussetzung machen, um die Aufgabe zu lösen - scheint, wie sie Ihnen beibringen, unsichere Web-Anwendungen zu bauen .. – Philipp