The following files exists in this folder. Click to view.
post_create.php149 lines UTF-8 Unix (LF) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
<?php
include("check_session.php");
if (!isset($_SESSION["items"])){
$_SESSION["items"] = [];
}
if(isset($_GET["mess"])){
$valid=array("text","img","header","link"); #för att problem inte ska uppstå så måste $_GET["mess"] innehålla rätt sträng
if (in_array($_GET["mess"], $valid)){ #om den gör det...
$_SESSION["items"][]=$_GET["mess"]; #...läggs ett nytt block till.
}
if(ctype_digit($_GET["mess"])){
$kill=(int)$_GET["mess"]; #vid borttagning av block sätts blockets id som meddelandet
array_splice($_SESSION["items"], $kill, 1); #blocket tas bort.
}
}
$oldInputArray=[];
#För att det som redan skrivits in ska bevaras när ett nytt block skapas så måste det lagras så något sätt
#enklast är att lagra allt i SESSION eller POST. Knapparna som skapar nya block och tar bort block är egentligen submit-knappar.
#men de leder bara tillbaka till detta dokumentet, fast ändrar vad som står i GET["mess"].
#så det som stod i blocken bevaras i POST.
if(!isset($kill)){ #Om vi lägger till ett block eller bara laddar om sidan läggs all info från POST in i $oldInputArray.
for($i=0; $i<=count($_POST)-2; $i++){
if(!isset($_POST["$i"])){
$oldInputArray[]=NULL;
}
else{
$oldInputArray[]=$_POST["$i"];
}
}
}
#Men om vi väljer att ta bort ett block så hamnar fortfarande infon ifrån det blocket i POST.
#Gör vi inget åt saken så kommer alltid det nedersta blocket tas alltid bort
else{
for($i=0; $i<=count($_POST)-3; $i++){
if($i>=$kill){ #om indexet i post är detsamma eller högre än det vi tog bort
$indexPlusOne= $i + 1; #så hoppar vi fram ett steg när vi lägger in infon i den andra arrayen. helt enkelt, vi hoppar över infon vi inte vill ha
if(!isset($_POST["$indexPlusOne"])){
$oldInputArray[]=NULL;
}
else{
$oldInputArray[]=$_POST["$indexPlusOne"];
}
}
else{
$oldInputArray[]=$_POST["$i"];
}
}
}
#det finns antagligen ett mycket lättare sätt att bevara vad som står i blocken, speciellt med javaskript, men det här var det sätt som jag kom på.
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Create Post</title>
<link rel="stylesheet" href="/spectre/spectre-master/dist/spectre.css">
<script src="https://kit.fontawesome.com/0b0c9a8dc7.js" crossorigin="anonymous"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Special+Gothic+Expanded+One&family=Special+Gothic:wght@400..700&display=swap" rel="stylesheet">
<style>
#navTop{
font-family: "Special Gothic Expanded One", Helvetica;
}
</style>
</head>
<body style="text-align: center; padding: 0.5rem;">
<header class="navbar">
<section class="navbar-section">
<a href="settings.php" class="btn btn-link">Settings</a>
<a href="home.php" class="btn btn-link">Home</a>
</section>
<section class="navbar-center">
<h3 id="navTop">PHiNTERNET</h3>
</section>
<section class="navbar-section">
<a href="#" class="btn btn-link">Create Post</a>
<a href="profile.php?mess=<?php echo"{$_SESSION["userId"]}"?>" class="btn btn-link">Profile</a>
</section>
</header>
<br>
<form method="post" enctype="multipart/form-data">
<input type="text" placeholder="Headline" required class="h1" name="headline" value="<?php if (isset($_POST["headline"])){ echo"{$_POST["headline"]}";}?>"><br><br>
<?php
for($fi=0;$fi<=count($_SESSION["items"])-1;$fi++){ #skapar block av den valda sorten
switch ($_SESSION["items"][$fi]){
case "text":
echo "<textarea id=\"text$fi\" name=\"$fi\" rows=\"4\" cols=\"50\" placeholder=\"Text here\" class=\"form-input\">";if(isset($oldInputArray[$fi])){echo"{$oldInputArray[$fi]}";} echo"</textarea>
<button formaction=\"?mess={$fi}\" class=\"btn btn-link\"><i class=\"fa-solid fa-trash-can\"></i> Remove text</button>
<br>";
break;
case "img":
echo "<input type=\"file\" id=\"img$fi\" name=\"$fi\" accept=\"image/*\"><br>";
echo "<input type=\"text\" id=\"img_t$fi\" name=\"img_t$fi\" placeholder=\"image description\" class=\"form-label\">
<button formaction=\"?mess={$fi}\" class=\"btn btn-link\"><i class=\"fa-solid fa-trash-can\"></i> Remove image</button>
<br>";
break;
case "header":
echo "<input type=\"text\" id=\"header$fi\" name=\"$fi\" placeholder=\"write your header here\" class=\"form-label h3\" value=\"";if(isset($oldInputArray[$fi])){echo"{$oldInputArray[$fi]}";} echo"\">
<button formaction=\"?mess={$fi}\" class=\"btn btn-link\"><i class=\"fa-solid fa-trash-can\"></i> Remove header</button>
<br>";
break;
case "link":
echo "<input type=\"text\" id=\"link$fi\" name=\"$fi\" placeholder=\"paste your link here\" class=\"form-label\" value=\"";if(isset($oldInputArray[$fi])){echo"{$oldInputArray[$fi]}";} echo"\">";
echo "<input type=\"text\" id=\"link_t$fi\" name=\"link_t$fi\" placeholder=\"Link name\" class=\"form-label\" value=\"";if(isset($oldInputArray[$fi])){echo"{$oldInputArray[$fi]}";} echo"\">
<button formaction=\"?mess={$fi}\" class=\"btn btn-link\"><i class=\"fa-solid fa-trash-can\"></i> Remove link</button>
<br>";
break;
}
}
?>
<br>
<section class="navbar-section">
<button formaction="?mess=text" class="btn btn-link"><i class="fa-solid fa-t"></i> | Text</button>
<button formaction="?mess=img" class="btn btn-link"><i class="fa-solid fa-image"></i> | Image</button>
<button formaction="?mess=header" class="btn btn-link"><i class="fa-solid fa-newspaper"></i> | Header</button>
<button formaction="?mess=link" class="btn btn-link"><i class="fa-solid fa-link"></i> | Link</button>
</section>
<br>
<button type="submit" formaction="h_post_upload.php" class="btn btn-primary">Post</button>
</form>
<?php
/*
for($i=0;$i<=count($_SESSION["items"])-1;$i++){ dehär använde jag egentligen bara för debugging när jag började med detta, jag tycker om den så den får vara kvar.
echo "{$_SESSION["items"][$i]}<br>";
}
*/
?>
</body>
</html>