Div element beim Laden der Seite anzeigen

CreativPur

Erfahrenes Mitglied
Hi,
ich habe folgendes Problem..

Ich habe einen Submit-Button, der über ein Form Daten per Method="GET" überträgt.
Das ganze bleibt durch action="#" auf der gleichen Seite und die Form-Inhalte werden auf der gleichen Seite auch ausgegeben.

Das funktioniert auch einwandfrei.

Jetzt habe ich dem Submit-Button eine ID gegeben, damit über ein Script ein Div-Element zusätzlich geöffnet wird.

HTML:
<button type="submit" class="btn btn-info btn-xs" id="sobo-einblenden">Bilder der Kategorie anzeigen</button>

Das Script:

Code:
<script>
$(document).ready(function(){
    /* Hier der jQuery-Code */
    $('#sobo-einblenden').click(function(){
        $('#sozialbookmarks').show();
    })
 
});
</script>


Das Div-Element:
HTML:
<div id="sozialbookmarks">
  <p><b>Bereich für social bookmarks</b><br>
  Hier kommen nun die üblichen Verdächtigen und Logos dazu.<br>
  Nicht vergessen, meine Seite zu bookmarken!</p>
</div>

Was nicht funktioniert ist folgendes:

Beim Klick des Submit-Button wird das Div-Element kurz angezeigt, dann verschwindet es und der Inhalt des Forms wird angezeigt.

Inhalt des Forms:

PHP:
<?php
                $kategorie = $_GET['kategorie'];
                    $sql = "SELECT bild_name, kategorie FROM design_bilder WHERE kategorie = '$kategorie'";
                        foreach ($pdo->query($sql) as $row)
                        echo'
                        <div style="display:inline-block">
                            <a href="#" onClick="swapImage("start","design_bilder/'.$row['bild_name'].'b.jpg" class="img_klein img-responsive")">
                            <label><input type="radio" name="design_bild" value="'.$row['bild_name'].'">
                            <img src="design_bilder/'.$row['bild_name'].'b.jpg" name="design_bild" class="img_klein img-responsive">
                            </label>
                            </a>
                        </div>
                        ';
                ?>

Wie erreiche ich es, dass der Inhalt des Forms und das Div-Element angezeigt werden ?
Über den Submit-Button wird die Seite neu geladen. Ich denke mal, dass daher das Problem besteht, dass das DIV-Element wieder ausgeblendet wird.
Nur weiß ich nicht, wie ich dies verhindern kann.
 
naja, du hast einen Button vom Typ Submit. Das führt zu einem Reload der Seite.
Du musst also aus dem Submit-Button einen normalen Button machen und die Versendung der Daten bzw. die aktualisierung der Seitenelemente via AJAX realisieren.
 
ahhh..
Ich tue mir schon mit PHP verdammt schwer.. Und jetzt noch AJAX ?
AJAX ist mir als Reinigungsmittel bekannt.. Aber...
Vielleicht lerne ich es ja auch noch als Programmiersprache..
 
  • $kategorie = $_GET['kategorie'];
  • $sql = "SELECT bild_name, kategorie FROM design_bilder WHERE kategorie = '$kategorie'";
SQL-Injection ist hier möglich. Bitte schnellstmöglich beheben.

AJAX ist übrigens keine Programmiersprache, sondern bezieht sich nur auf das Konzept, bestimmte JavaScript API-Funktionen zur Kommunikation mit dem Server zu benutzen. Wenn du 'AJAX' liest, denk dir konzeptionell einfach 'JS Fetch API' (ehemals XMLHttpRequest).
 
Hi,

wenn es am Neuladen der Seite liegt, kannst du es sicherlich auch mit Cookies oder den LocalStorage lösen. Damit bzw. dort kannst du speichern, ob das DIV beim nächsten Seitenaufruf angezeigt werden soll.

Ciao
Quaese
 
Gib mal als Namen <script>alert('XSS');</script> ein. Stichwort: Cross-Site Scripting (aka. XSS), schwere Sicherheitslücke => Immer kontextabhängig maskieren, in dem Fall mit htmlentities htmlspecialchars (kann mir nie merken, welche der beiden "besser" war bei PHP).
 
ja php bin ich noch nicht so gut drinne. Aber danke muß ich in zukunft ändern.Aber das ist ja nur nee test php für diesen fall.Was könnte man den über den Cross-Site-Scripting so alles anstellen?
In deinen Beispiel bekomme ich selbst ja einen Alert. Kann man sich damit nur selbst ärgern oder sogar das php dauerhaft manipulieren oder so?
 
Was könnte man den über den Cross-Site-Scripting so alles anstellen?
Ich könnte andere Nutzer per Formular auf die von mir präparierte Seite locken und so per JS vom XSS alle Cookies auslesen und sowieso den ganzen Seiteninhalt. Stell dir vor, Google Mail hätte solch eine Lücke. Ich könnte all deine Mails auslesen und sogar in deinem Namen Mails senden.
Das PHP-Skript an sich kann man dadurch nicht manipulieren.

Für weitere Angriffsszenarien kannst du den Begriff einfach googeln ;)
 
Zurück