jQuery, ajax $_GET / $_POST an Php Senden

  • JavaScript

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von seby1302.

    Puh, so kommen wir hier nicht weiter denke ich.

    Die load.php ist überhaupt nicht notwendig damit irgendwas davon funktioniert, die Datei enthält nur die beiden Funktionen damit deine Hauptdatei nicht so voll ist.

    Denn If($name) Ist im Index.Php trotz Einbindung des Load.Php immer noch nicht auswertbar....

    Das hier und aller Text davor und danach ergibt komplett keinen Sinn. Lern die Basics, sobald das was du da geschrieben hast für dich auch keinen Sinn ergibt, bist du auf nem guten Weg und machst Fortschritte.

    <?php echo $_GET['Login']='true';?>

    Joa ... ?(

    PHP kann nach dem Laden der Seite gar nichts mehr tun. Ich hab am Anfang empfohlen dass du dich generell mal über Client-Server-Kommunikation schlau machen solltest. Hast du scheinbar nicht. PHP ist eine serverseitige Skriptsprache, der Interpreter lädt und führt deinen Code aus und schickt dann das Ergebnis in Form eines http response zurück an den Client, also deinen Browser. Die Ausführung deines PHP Skripts ist beendet lange bevor die "Webseite" für dich sichtbar ist. Was dabei vom Server an dich zurück geschickt wird, sind die Header die mit PHP als response gesendet werden sowie alle Ausgaben die das Skript produziert (mit echo, print oder je nach Einstellung eben auch Fehlermeldungen).
    Dieses Vorgehen bleibt gleich, sowohl für "normale" Requests als auch ebenso für XHR Requests. XHR bedeutet XMLHttpRequest und ist eine Schnittstelle für JavaScript. JavaScript ist eine clientseitige Sprache, das bedeutet dass der JavaScript Code lokal auf deinem PC aus geführt wird. XHR stellt hier die Möglichkeit dar, von der clientseitigen Sprache JavaScript aus ebenfalls http Requests auszuführen.

    Hinter Ajax Abfragen steckt also keine Magie, es ist exakt dasselbe wie wenn du die Seite manuell aufrufst, nur dass es eben im Hintergrund und ausgehend von JavaScript passiert.
    Wenn du also mit Ajax die api.php aufrufst, ist es genauso, als würdest du die api.php in einem neuen Tab öffnen - hier, schau selbst: xmgr.de/public/seby/api.php?trigger=Testbutton1
    Dadurch dass es aber ja mit JavaScript gemacht wird, kriegt man davon erst mal nichts mit. Allerdings kannst du natürlich alles in den Browser Entwicklungstools im Tab Netzwerkanalyse nachverfolgen, und wie du siehst:



    Dort siehst du ganz klar, wie die Abfrage gesendet wurde, welche URL aufgerufen wurde und was der Server zurück schickt.

    Soweit schön, nun haben wir eine Antwort vom Server in Form von Text der zurückgeliefert wird. Jetzt können wir mit JavaScript noch entscheiden, was wir damit anstellen wollen. Wir können gar nichts tun, wir können es mit console.log() in die Konsole schreiben, wir können es mit alert() ausgeben oder aber in einen beliebigen HTML Container auf der aktuellen Seite einfügen. Was ich in meinem Beispiel drin hab ist quasi die letzte Option, ich nehm also den Text den der Server im Hintergrund zurückgesendet hat und zeige ihn in einem HTML Container mit dem class Attribut "request-target-1". Und das war's.

    Die Hauptdatei ist die index.php, wenn du aber die index.php wiederum mit Ajax lädst und den Text der als Antwort zurück kommt in einen HTML Container auf der Seite einfügen willst, ist das eine dumme Idee, denn du lädst damit ja nochmal exakt die gleiche Seite rein wie die die du ja schon offen hast.
    Was du aber machen kannst, ist, in deinem Codeschnippsel mit dem jQuery Ajax die URL anzupassen und etwas hinzuzufügen das du dann mit PHP auswerten kannst. Momentan ist ja die URL die wir hierfür drin haben diese hier: api.php?trigger=Testbutton1. Ändere das damit es so aussieht: index.php?ajax=1&action=test1&trigger=Testbutton1.

    Dann ändere den oberen Teil in deiner index.php der in den PHP Tags steht:

    PHP-Quellcode

    1. <?php
    2. # Zum Testen kannst du die Fehlerausgabe einschalten:
    3. ini_set('display_errors', '1');
    4. error_reporting(E_ALL);
    5. # Loader einbinden
    6. require_once __DIR__ . '/load.php';
    7. $ajax = (int)$_GET['ajax'] ?? false;
    8. if($ajax){
    9. $action = (string)$_GET['action'] ?? '';
    10. # Jetzt kannst du abhängig von $action verschiedene Codes ausführen
    11. # Zum Beispiel:
    12. if($action == 'test1'){
    13. echo "Test1 wird ausgeführt";
    14. }
    15. # Wenn test2 als action übergeben wird, machen wir halt was anderes
    16. if($action == 'test2'){
    17. echo "Mal was anderes ... :)";
    18. }
    19. # Wenn ajax als request Parameter übergeben wurde, stoppen wir hier.
    20. exit();
    21. }
    22. echo "<!doctype html>";
    23. ?>


    Das HTML Zeug das danach noch in der index.php steht kann so bleiben wie es ist.

    In der Art kannst du dann also auch die gleiche Seite wie die die schon offen ist nochmal aufrufen, musst aber nicht das ganze HTML nochmal reinladen - du willst ja sicher keine verschachtelten html, head und body tags.

    Bin mir jetzt trotzdem nicht sicher ob dir das überhaupt viel bringt, allerdings kann ich das alles nicht NOCH einfacher erklären. Du solltest generell ein solides Basiswissen aufbauen, da hapert es noch gewaltig. Kann man aber ja alles hinbekommen ;)



    Link :thumbup:
    Hello World

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Link“ ()

    Ja html hing mir schon immer auf die nerven :D

    Mal was anderes, wie könnte ich das Über die Css Regeln, das beim Öffnen des wrapper, mein Html overflow: hidden; ist?

    HTML-Quellcode

    1. #active:checked ~ .wrapper { // öffnet den Wrapper wen checkbox checked ist
    2. right:0;
    3. }
    4. #active:checked + html::after{// Funktioniert leider nicht
    5. overflow: hidden;
    6. }

    Marcus Gräfe schrieb:

    Andy2002 schrieb:

    Sorry hab mich da etwas "ungenau" ausgedrückt, es kommt darauf an, was man mit Post oder Get machen möchte.

    Auch wenn @Link es im Prinzip schon gesagt hat: Mal abgesehen davon, dass das verlinkte Buch von Mitte 2006 ist (in Webjahren quasi Steinzeit), kann ich da nichts von Sicherheitsbedenken speziell bei GET oder POST lesen. SQL Injections sind an vielen Stellen möglich, ich würde nicht sagen, dass das in irgendeiner Form speziell gegen POST (oder GET) spricht. Wie soll man denn auch sonst Daten vom User zum Server bringen? Auch ist für mich eine SQL Injection kein Man-in-the-middle-Angriff. Zudem vermute ich, dass kaum jemand, der sich auskennt, heute noch normale und damit anfällige SQL-Anweisungen benutzt, sondern Prepared Statements (hoffe ich zumindest ;) ).


    Dem stimme ich zu. Aber es ist wie FTP, einfach nicht tot zu bekommen, bzw bis jeder umgestellt hat, dauert es, und genau das wird ausgenutzt.
    @Andy2002 gut, SQL-Injection oder XSS Attacken haben halt faktisch überhaupt nichts damit zu tun, zumindest nichts was im entferntesten Grund oder Anlass sein könnte für die Behauptung, dass GET oder POST "unsicher" wären. Diese beiden Schwachstellen entstehen, wenn der Programmierer einer Webseite schlampigen Code geschrieben hat, aber was hat das mit http requests im Allgemeinen zu tun ... gar nix.

    Link :thumbup:
    Hello World
    So habe es endlich hinbekommen, Allerdings werde ich auch das eine oder andre mal die Hier geposteten Code Gebrauchen :D
    An dieser stelle, Erkläre ich den Post als Gelöst.

    PHP-Quellcode

    1. //Setzt es auf Hidden, SOBALD man auf den Button mit Id="active" Klickt.
    2. jQuery('#active').click(()=>{
    3. $('html, body').css({
    4. overflow: 'hidden'
    5. });
    6. })
    7. //Setzt es auf Hidden, SONALNGE Checkbox mit Id="active" Checked ist.
    8. if ($('#active').is(':checked')) {
    9. $('html, body').css({
    10. overflow: 'hidden'
    11. });
    12. }
    13. // Setzt den Style Zurück auf Default, SOBALD Checkbox Unchecked ist.
    14. jQuery('#loginback').click(()=>{
    15. $('#active').prop('checked', false);
    16. $('html, body').css({
    17. overflow: 'initial'
    18. });
    19. })


    Lg und vielen dank für alles. 8-)