View sourcecode

The following files exists in this folder. Click to view.

post_create.php

149 lines UTF-8 Unix (LF)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<?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"], $kill1); #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>