PHP Script wird bei aufrufen der Seite schon "abgespielt"

Wolly300

Lieutenant
Registriert
Mai 2014
Beiträge
514
Hallo Communtiy,

ich bin noch am Anfang von PHP und habe jetzt folgendes Problem.

PHP:
<html>
    <head>
        <title>Pushnachricht</title>
        <link rel="shortcut icon" href="logo.png">
        <link rel="stylesheet" href="style.css">  
    </head>
    
    <body>
        <?php
            //Abfrage der Nutzer ID vom Login
            $userid = $_SESSION['userid'];
            session_start();
            $delay = "5";
            $newlocation = "home.php";

            if(!isset($_SESSION['userid'])) 
            {
            	include('fehler.html');
            	header("Refresh: $delay; URL=$newlocation");
                die();
            }

            if (isset($_POST["submit"]))
            {
            	include('senden.html');
            	include('Pushover.php');
            
                $Title = $_POST["Push-Title"];
                $Nachricht = $_POST["Push-Nachricht"];
                $push = new Pushover();
                $push->setToken('?');
                $push->setUser('?');

                $push->setTitle($Title);
                $push->setMessage($Nachricht);
                $push->setUrl();
                $push->setUrlTitle();
                $push->setDevice('iPhone');
                $push->setPriority(0);
                $push->setRetry(60); //Used with Priority = 2; Pushover will resend the notification every 60 seconds until the user accepts.
                $push->setExpire(180); //Used with Priority = 2; Pushover will resend the notification every 60 seconds for 3600 seconds. After that point, it stops sending notifications.
                $push->setCallback();
                $push->setTimestamp();
                $push->setDebug(true);
                $push->setSound('bike');

                $go = $push->send();

                $receipt = $push->getReceipt();
            
                header("URL=$newlocation");
            }
            else 
            {
            	include('fehler.html');
            	header("Refresh: $delay; URL=$newlocation");
            }
        ?>
            <div class="Eingabe">
                <form  method="POST">  
                    <p1 class="Title">Pushnachricht</p1>
        			<div class="Feld-Abstand">
                        <input placeholder="Titel" type="text" name="Push-Title" class="Feld-Design">
                    </div>
                    
        			<div class="Feld-Abstand">
        			    <textarea placeholder="Nachricht" name="Push-Nachricht" cols="35" rows="4" class="Feld-Design-Nachricht"></textarea> 
        			</div>
        			<input class="senden" type="submit" name="submit">
                </form> 
            </div> 
    </body>
</html>

Wenn ich diese Seite aufruf, wird schon automatisch das else ausgeführt, weil der Benutzer natürlich noch nichts eingeben konnte. Wie kann ich das beim ersten mal ausführen "deaktivieren" ?

Danke für eure Hilfe
 
Session-Start muss an den Anfang (vor $_SESSION).

Die normale Lösung ist, auf empty($_POST) zu testen und ohne Fehlermeldung dann die Seite anzuzeigen. (Achtung: $_POST["submit"] kann leer sein, falls jemand die Form via Enter absendet).

​Ach ja: Automatische Weiterleitungen im Fehlerfall sind nicht so pralle. Und generische Fehlermeldungen auch nicht :).
 
Zurück
Oben