"alert" nur beim ersten Aufruf der Seite verwenden

  • Hy, ich hab eine etwas komplizierte Frage wobei ich mir nicht sicher bin ob ich hier richtig bin.
    Wenn jemand die Startseite aufruft habe ich eine art Popup mit diesem Code gemacht:

    Code
    <!--
    <script type="text/javascript">
    <!--
    alert("Nachricht");
    //-->
    </script>


    Das Problem ist aber, das dieser alert jedesmal erscheint wenn man die Startseite besucht. Heist wenn man auf eine andere Seite wechselt und dann wieder zurück auf die startseite erscheint es nocheinmal.
    Das das das aber extrem nervend und auch relativ Sinfrei is;), suche ich einen Code, damit dieses Popup nur erscheint wenn man die Startseite zum ersten mal aufruft. Damit meine ich nicht das es nie wieder erscheint. Wenn man den Browser schliest, bzw. auf eine andere externe Seite wechselt, und die Startseite meiner Page wieder aufruft sollte es schon wieder erscheinen.


    Ehrlichgesagt bin ich mir nicht sicher ob es sowas überhaupt gibt, aber wenn ja wärs cool wenn mir da jemand helfen könnte.


    LG,
    Alex ;)

  • Öhm.. Entweder du machst das über einen Cookie oder was mir sonst noch einfallen würde, wäre mit PHP und Session zu arbeiten^^
    Also das der Code nur dann ausgegeben wird, und daher nur dann ausgeführt wird, wenn keine Session vorhanden ist :D

    PHP
    <span class="syntaxdefault"><?php<br />    session_start</span><span class="syntaxkeyword">();<br />    if(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'Besuch'</span><span class="syntaxkeyword">] === </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">){<br />        </span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'Besuch'</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">true</span><span class="syntaxkeyword">;<br />        echo </span><span class="syntaxstring">'DEINEN JS-CODE'</span><span class="syntaxkeyword">;<br />    }<br /></span><span class="syntaxdefault">?></span>


    Ich glaube so müsste das ganz grob aussehen^^

  • Hab das jetzt mal so gemacht:

    PHP
    <?php
        session_start();
        if($_SESSION['Besuch'] === null){
            $_SESSION['Besuch'] = true;
            echo 'alert("Nachricht")';
        }
    ?>


    Aber irgendwie passiert da gar nichts. Wieso weis ich leider auch nicht weil ich mich mit PHP Nüsse auskenn *gg*

  • Nur mal eine Frage.. wo wird den das 'alert("Nachricht");' den ausgegeben? :)
    Schau dir doch den Quellcode an, wo es steht :D


    Naja.. die Lösung ist ganz einfach, alert ist eine JS Funktion und muss daher in einen <script>-Tag? :)

    Code
    [Sessionkram]...
    echo '
    <script>
        alert("Nachricht");
    </script>';

    :wink:

  • Ok, hab das jetzt so gemacht:

    PHP
    <?php
        session_start();
        if($_SESSION['Besuch'] === null){
            $_SESSION['Besuch'] = true;
            echo '
            <script>
            alert("Nachricht");
            </script>';
        }
    ?>


    Aber es funktioniert trozdem nicht^^

  • 1. Welchen Doctype verwendest du?
    <script> (Nur so) geht nur im HTML5-Doctype.


    2. Verwende einfach aus Sicherheit folgendes:

    Code
    <script language="javascript" type="text/javascript">

    anstelle von <script>. War eben nur etwas faul :P

  • Ich weis das ich dir jetzt vielleicht ein bischen auf den Sack gehe, habs jetzt so gemacht:


    und trozdem gehts nicht ^^


    LG Alex

  • Du musst Sessions ganz am Anfang der Datei starten, bevor etwas anderes ausgegeben wird, sonst funktionieren sie nicht.


    Ich habe den Befehl mal nach oben verschoben.

    PHP
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php <br /> session_start</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">?></span>    <br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html5/"><br />    <html lang="de"><br />    <head><br />    <title></title><br />    <script type="text/css"><br />    body{<br />        background-image: url("bg.jpg") no-repeat;<br />    }<br />    </script><br />    </head><br />    <body><br />    <span class="syntaxdefault"><?php<br />        </span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'Besuch'</span><span class="syntaxkeyword">] === </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">){<br />            </span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'Besuch'</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">true</span><span class="syntaxkeyword">;<br />            echo </span><span class="syntaxstring">'<br />            <script language="javascript" type="text/javascript"><br />            alert("Nachricht");<br />            </script>'</span><span class="syntaxkeyword">;<br />        }<br />    </span><span class="syntaxdefault">?><br /></span>    </body><br />    </html><br /></span>
  • Habs jetzt genau so gemacht:


    Sorry wenn ich jetzt wem auf die Nerven geh aber ich kenn mich überhaupt nicht mit PHP aus, und weis deshalb immer nocht nicht wiesos nicht geht^^


    LG, Alex

  • Eine andere Möglichkeit :D


    Dem internen Link zur Startseit eine Variable anhängen.


    <!-- m --><a class="postlink" href="http://startseite.php?nichtnocheinmal=abjetzt">http://startseite.php?nichtnocheinmal=abjetzt</a><!-- m -->
    also

    Code
    <a href='startseite?nichtnocheinmal=abjetzt>home</a>


    und über deine js-Anweisung stülpst du

    Code
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'nichtnocheinmal'</span><span class="syntaxkeyword">]!=</span><span class="syntaxstring">'abjetzt'</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">:</span><span class="syntaxdefault"> ?><br /></span><br />/*hier dein JS*/<br /> <br /><span class="syntaxdefault"><?php endif</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> ?><br /></span></span>


    Gruß
    peter

  • Sören
    du hast schon recht - das ist eine schwachstelle :D


    ich gehe davon aus:
    komme ich von extern - alert (zB: Hi, Du! Super das du da bist!!)
    von intern - keiner


    man könnte auch noch die IP speichern, so, dass alert überahaupt nur ein einziges mal angezeigt wird


    Gruß
    peter

  • Richtig Peter, einfach mit PHP prüfen ob die vorherige Seite intern oder extern ist.


    IP speichern auf keinen Fall, unnötiger Aufwand da sich diese je nach Person (un)/regelmäßig ändert.


    Ich kenne Leute die haben stündlich eine neue IP.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!