Ankündigung

Einklappen
Keine Ankündigung bisher.

PLZ Abfrage zu Sessionbeginn - Variablen werden zurückgesetzt

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PLZ Abfrage zu Sessionbeginn - Variablen werden zurückgesetzt

    Hallo Leute,

    ich stehe vor folgendem Problem:

    Für einen Webshop möchte ich zu Beginn eines Besuchs (also empfiehlt sich das Nutzen einer Session?) ein Fenster anzeigen lassen, in welches der Nutzer seine PLZ eintippen kann, sodass ich Anfahrtskosten in die Preisanzeige integrieren kann. Nach der Eingabe möchte ich die Entfernung mittels der Google API berechnen lassen (siehe: http://mizine.de/html/mit-google-map...gen-berechnen/) und als Session-Variable speichern.

    Dafür habe ich ein Modalwindow mit HTML erstellt und mit <form> tags versehen. Diese Anzeige habe ich in der index.php eingefügt, welche bei jedem Seitenaufruf ausgeführt wird. Da ich nach der Eingabe wieder die Startseite anzeigen möchte, ruft meine form action auch wieder "$_SERVER['PHP_SELF']" auf.
    Nun stehe ich vor dem Problem, dass zwar der Wert abgefragt und die Entfernung korrekt berechnet wird, ein Neuladen der Seite jedoch dafür sorgt, dass die Distanzvariable zurückgesetzt wird. Im Code habe ich keinen Hinweis darauf gefunden, warum dies der Fall sein könnte. Erst war ich der Ansicht, dass die $_POST['plz'] - Variable das Problem sei und sich nach dem Seitenaufruf zurücksetzt und somit mit NULL zugewiesen wird. Daher habe ich die Variable 'count' eingebaut, um die Berechung nur beim ersten Aufruf anzuzeigen. Geholfen hat es nicht. (siehe Code)

    Bei einer Session soll es doch möglich sein, eine Sessionvariable über mehrere Seitenaufrufe hinweg zu speichern. Da ich leider Anfänger in PHP bin, wäre es klasse, falls jemand hier weiterhelfen kann. Spontan fällt mir wirklich nichts ein, womit dies zusammenhängen könnte... Falls ihr der Meinung seid, dass ich den komplett falschen Weg gehe, um das o.g. Problem zu lösen, freue ich mich natürlich auch über jegliche neue Ideen!

    Freue mich über jede Hilfe!

    Viele Grüße,
    SamDouglas112

    PHP-Code:
    session_start();


    if (!isset($_SESSION['visited'])) { 
    ?>
    <div id="PLZModal" class="modal">
      <div class="modal-content">

        <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
            <h1>NUR NOCH EINEN MOMENT...</h1>
            <p><p>Wir machen deine Bestellung so einfach wie m&oumlglich.</br>
            Bitte gib' deine Postleitzahl an, damit wir unsere Leistungen inklusive Anfahrtskosten anzeigen k&oumlnnen.</br>
            Du brauchst dir keine Gedanken um zus&aumltzliche Kosten zu machen.</p></p>
        <div align="center">
        <p><label>Deine Postleitzahl:</label></br>
        <input class="plzeingabe" align="center" name="plz" type="number" min="01001" max="99998" placeholder="31275"></p>
        </div>
            <p><button class="btn-plz-submit" id="submit">LOS GEHT'S</button></p>
        </form>

      </div>
    </div>

    <?php        

        $_SESSION
    ['visited'] = true;
        
    $_SESSION['count'] = 1;

    } else {
        if (isset(
    $_SESSION['visited'])) {
            if(
    $_SESSION['count'] == 1) {
                
    $plz $_POST['plz'];
                
    $_SESSION['kundenplz'] = $plz;
                
    $_SESSION['count'] = 0;
            }
        }
           
    $url="http://maps.googleapis.com/maps/api/distancematrix/xml?origins=31275DE&destinations=".$_SESSION['kundenplz']."+DE&mode=driving&language=de-DE&sensor=false";
           if(
    $xml=simplexml_load_file($url)) {
                 if(
    $xml->status=='OK') {
                     
    $_SESSION['distance'] = $xml->row->element->distance->text;
            }
           } 
    ?> 
        <script type="text/javascript" language="Javascript">  
        alert("Die Distanz zwischen und <?php echo $_SESSION['kundenplz']; ?> beträgt <?php echo $_SESSION['distance']; ?>.")  
        alert("Count ist <?php echo $_SESSION['count']; ?>");
        </script>
    <?php    
    }
    ?>

  • #2
    Du musst halt debuggen.

    Du hälst zudem das EVA-Prinzip nicht ein.

    Ausserdem ist dein HTML kaputt.Verwende den Validator um dir die Fehler anzeigen zu lassen.
    Postleitzahlen sind zudem keine Zahlen sondern Zeichenketten.
    Das action Attribut im Form-Element kannst du weglassen unter HTML5, deine Variante stellt nur eine Sicherheitslücke dar.
    Verwende durchgängig UTf-8 ALS Zeichenkodierung, dann musst du m&oumlglich nicht schreiben sondern möglich.

    Und wo hast du gelernt das man das so schreibt
    HTML-Code:
    <script type="text/javascript" language="Javascript">

    Kommentar

    Lädt...
    X