JavaScript Javascript Variable an PHP übergeben und zurück

hemorieder

Lieutenant
Registriert
März 2003
Beiträge
649
Hey,

folgende Situation:
Ich habe einen Wert der via Javascript berechnet wird, diesen möchte ich gerne via PHP in einer Datenbank verarbeiten und das Ergebnis der Verarbeitung wieder mit Javascript nutzen. in Code quasi:

Code:
var wertJS = 10;

<?php

$meinePHPvariable = wertJS;
...
sql = "SELECT xy FROM xy WHERE zahl = meinePHPvariable";
....
$neuerWertPHP = $sql_query_ERG;

php>

var neuer_wertJS = $neuerWertPHP;

documentGetElementByID('balbla').innerHTML = neuer_wertJS;

Ich hoffe an versteht was ich meine :)
Es geht auch nur um ein mini Tool für mich, also da muss jetzt keine super code bei rauskommen, hauptsache es klappt :)

lg
 
  • Gefällt mir
Reaktionen: sidewinderpeter
Der passende Begriff ist Ajax.
Sobald Javascript die Berechnung gemacht hat rufst du eine URL per JS auf wo du per GET/POST die Daten an PHP sendest.

Edit: W3C ist etwas outdated, externe URLs lassen sich mittlerweile einfach ohne externe Scripte aufrufen; die fetch-API ist in allen halbwegs modernen Browsern verfügbar.
 
  • Gefällt mir
Reaktionen: Knito
Plain JS oder geht auch Ajax?
Javascript:
           $.ajax({
                    url: "update.php",
                    type: "POST",
                    data: {wert:wertJS},
                    success: function(data){
                        console.log("worked", data);
                    },
                    error: function(data){
                        console.error("error", data);
                    }
           });

In PHP hast du den Wert dann in $_POST['wert'].
Kannst das Ergebnis von PHP einfach mit echo ausgeben, sollte dann in der Console mit "worked" ausgegeben werden.
 
Ich glaub du solltest dir erstmal grundlegende Basissachen anschaun was das betrifft.
Du mischt gerade Sprachen und du mischt Server Client.

JS läuft im Browser lokal.
Php auf dem Server (der kann auch lokal sein, aber er ist extra und es läuft niemals zusammen)

Du kannst http an PHP schicken und den response zurück an JS.
 
S.Kara schrieb:
Plain JS oder geht auch Ajax?
Ajax seht nur für Asynchronous JavaScript And XML und ist nichts jQuery-Spezifisches.
jQuery hat es nur einfach gemacht Ajax zu benutzen (statt manuell XHR zu benutzen), alles was im Browser einen XHR-Request macht um Daten asynchron mit dem Server auszutauschen fällt unter Ajax.
 
  • Gefällt mir
Reaktionen: Web-Schecki und S.Kara
Joshinator schrieb:
Ajax seht nur für Asynchronous JavaScript And XML und ist nichts jQuery-Spezifisches.
Verdammt wieso wusste ich das all die Jahre nicht. :o
Dachte es wäre jQuery. Danke für die Klarstellung. :)
 
  • Gefällt mir
Reaktionen: Joshinator
Marco01_809 schrieb:
Wow, nur 3 Zeilen Beispielcode und schon eine kritische Sicherheitslücke. Von der Seite unbedingt fernhalten!
Klar, man kann auch übertreiben. Das ist eine Übungsseite für Anfänger. Wäre nett von Dir, wenn Du auch das direkte Problem ansprichst und einen Lösungsvorschlag gibst, wie man es denn richtig macht, anstatt es als kritische Sicherheitslücke benennst und Du die ganze Seite gleich pauschal verteufelst.

Ich denke, dass Du mit Deiner Aussage andeutest, dass man Variablen, die man global benutzen möchte, vorab definiert und ihnen einen Wert zuweist, bevor sie eigentlich zum Einsatz kommen, um zu vermeiden, dass sie durch die Eingabe des Benutzers bereits verwendet werden können, z. B. so:
Code:
<?php
$vorname = 0; //oder $vorname = Max;
$nachname = 0; //oder $$nachname = Mustermann;

$vorname = $_GET['vorname'];
$nachname = $_GET['nachname'];
echo "Hallo $vorname $nachname";
?>

Weiter kann man noch mit der PHP-Funktion mysqli_ real_escape_string das Datenbankkommando maskieren, um SQL-Injetions vorzubeugen:
Code:
$vorname = mysqli_real_escape_ string( $_GET['vorname'] );
$nachname = mysqli_real_escape_ string( $_GET['nachname'] );
Quelle: https://www.php.net/manual/en/mysqli.real-escape-string.php
 
Zuletzt bearbeitet:
Ja, Anfänger sollten es am Besten erstmal falsch lernen :freak:

Nein, ich meine die XSS-Attacke mit der man Cookies (= Sessions!), Passwörter oder sonstige Nutzerdaten aus der Seite klauen kann.

Code:
http://page.example/index.php?vorname=<script>klaueCookies(document.cookies);</script>

Variablen dürfen in den HTML-Code nur mittels htmlspecialchars() ausgegeben werden!

(Und bei SQL lieber die modernen PDO prepared statements nutzen als dieses escape_string gehampel).
 
  • Gefällt mir
Reaktionen: DubZ, Fombu, ###Zaunpfahl### und 2 andere
S.Kara schrieb:
Plain JS oder geht auch Ajax?
Javascript:
           $.ajax({
                    url: "update.php",
                    type: "POST",
                    data: {wert:wertJS},
                    success: function(data){
                        console.log("worked", data);
                    },
                    error: function(data){
                        console.error("error", data);
                    }
           });

In PHP hast du den Wert dann in $_POST['wert'].
Kannst das Ergebnis von PHP einfach mit echo ausgeben, sollte dann in der Console mit "worked" ausgegeben werden.

Das klappt quasi. Danke. Aber wie kriege ich das Ergebnis von PHP wieder in JS rein?
Also das Ergebnis der Berechnung von update.php
Mein log sagt immmer:

Code:
worked <empty string>
 
Über die ganz normale Ausgabe von PHP.
echo zum Beispiel.
Ergänzung ()

Nochmals als allgemeiner Hinweis. IMMER wenn man Daten entgegen nimmt bei denen man nicht zu 100% sicher sein kann was das für Daten sind, ist das eine potenzielle Lücke!

Jetzt zum lernen und so ist das scheiß egal... aber bitte nicht vergessen wenn was produktiv gehen soll.
 
Zuletzt bearbeitet:
###Zaunpfahl### schrieb:
Über die ganz normale Ausgabe von PHP.
echo zum Beispiel.
Und bitte gleich mit nem vernünftigem Response arbeiten. Einfach Plaintext per echo fällt dir irgendwann auf die Füße.
 
Zurück
Oben