PHP-Variable in JavaScript nutzen
piewi
- javascript
- php
Hallo allesamt,
ich bin kompletter Neuling was HTML, PHP und JavaScript angeht. Hab mich in den letzten Wochen versucht einzulesen und auch schon diverse Sachen geschafft/verstanden, allerdings habe ich ein (für euch wahrscheinlich) kleines Problem:
Ich habe auf der ersten Seite eine Checkbox und wenn diese angehakt (oder auch nicht angehakt) ist, soll auf der nächste Seite eine andere Checkbox aktiviert/dekativiert sein.
Bisher habe ich es geschafft eingegebene Werte mittels PHP auf der nächste Seite zu holen und per echo anzeigen zu lassen:
<?PHP
$Bestellnr = $_POST["Bestellnr"];
ECHO $Bestellnr;
?>
Schaffe es auch innerhalb einer Seite eine checkbox abzufragen und eine andere entsprechend zu aktivieren/dekativeren:
<html>
<input type="checkbox" id="cb01" onclick="BLA()" >01</input>
<input type="checkbox" id="cb02" >02</input>
</html>
<script>
function BLA(){
var pruefen = document.getElementById("cb01");
var pruefen2 = document.getElementById("cb02");
if (pruefen.checked){
pruefen2.disabled = true
}
else
{
pruefen2.disabled = false
}
}
</script>
Aber das ganze über zwei Seiten kriege ich nicht gebacken. Wie kann ich in Java die Variablen aus PHP abfragen?
Entschuldigt bitte, falls ich mich umständlich ausdrücke :-( und danke für jede Hilfe
Tach!
Bisher habe ich es geschafft eingegebene Werte mittels PHP auf der nächste Seite zu holen und per echo anzeigen zu lassen:
$Bestellnr = $_POST["Bestellnr"]; ECHO $Bestellnr;
Man muss solche Werte nicht "holen". Sprich, man muss sie nicht aus dem Array $_POST in andere Variablen kopieren. Man kann direkt mit dem Array-Wert arbeiten, so wie du mit der kopierten Variable arbeiten würdest.
Aber das ganze über zwei Seiten kriege ich nicht gebacken. Wie kann ich in Java die Variablen aus PHP abfragen?
Javascript ist nicht Java. Und du kannst nicht von einem System auf Variablen eines anderen Systems zugreifen. Wenn du vom Browser einen Request an den Server sendest, dann arbeitet der diesen ab und liefert ein Ergebnis in Form eines HTML-Dokuments beispielsweise. Der Server ist damit fertig und vergisst deinen Request wieder. Am Client hast du nur dieses Dokument.
Wie kommen nun Daten vom Server zum Client? Indem du ein gültiges Dokument erstellst, das der Browser lesen und interpretieren kann. Das heißt, deine Werte müssen im HTML-Code stehen. Oder als Javascript-Code im HTML-Dokument.
Wenn du nun eine angehakte Checkbox haben möchtest, musst du den HTML-Code für eine angehakte Checkbox von deinem PHP-Script ausgeben lassen. Javascript brauchst du dafür erstmal nicht.
dedlfix.
Bei Klick auf "antworten" bekomme ich eine leere textarea. Mal sehen, ob das Zitieren "freihändig" gelingt ...
$Bestellnr = $_POST["Bestellnr"];
ECHO $Bestellnr;
> Man muss solche Werte nicht "holen". Sprich, man muss sie nicht aus dem Array $_POST in andere Variablen kopieren. Man kann direkt mit dem Array-Wert arbeiten, so wie du mit der kopierten Variable arbeiten würdest.
Sachlich korrekte Aussage, aber ich rate dringend davon ab, ein vollkommen unbekanntes array über die tausend Codezeilen PHP mal hier, mal dort abzufragen. Am Anfang des Programmcodes sollte klar sein, welche Parameter erwartet werden.
Ausserdem sollte am Anfang des Codes die Eingabeprüfung stehen.
Und was für ein Chaos gibt das. wenn man später bei der Programmpflege "vergessen" hat, dass Parameter A eigentlich $_POST['A'] sein sollte und man $_GET['A'] abfragt.
Hallo
Bei Klick auf "antworten" bekomme ich eine leere textarea. Mal sehen, ob das Zitieren "freihändig" gelingt ...
Naja, nicht ganz. Nutze für Zitate den (momentan) letzten Button oberhalb des Eingabefelds mit der überraschenden ;-) Beschriftung „Zitat einfügen“. Das wurde vor kurzem hier eingeführt, unter Anderem, um nur noch einen Antwort-Button zu haben.
Tschö, Auge
Aber das ganze über zwei Seiten kriege ich nicht gebacken. Wie kann ich in Java die Variablen aus PHP abfragen?
Bevor du die zweite Seite aufrufst, muss ja das Formular der ersten Seite zum Server geschickt werden. Der wiederum reagiert auf die Werte, die er gerade empfangen hat.
<input type="checkbox" id="cb02" <? if (...) echo "checked"; ?>>
PHP setzt mit checked also den Haken auf die neue Seite, nicht Javascript.
Hallo Linuchs,
<input type="checkbox" id="cb02" <? if (...) echo "checked"; ?>>
Das echo
lässt sich auch noch weg rationalisieren:
<input type="checkbox" id="cb02"<?=(...)?' checked':''; ?>>
Gruß
Julius
--
Zu argumentieren, dass Sie keine Privatsphäre brauchen, weil Sie nichts zu verbergen haben, ist so, als würden Sie sagen, dass Sie keine Freiheit der Meinungsäußerung brauchen, weil Sie nichts zu sagen haben.
Zu argumentieren, dass Sie keine Privatsphäre brauchen, weil Sie nichts zu verbergen haben, ist so, ...
Gehört hier zwar nicht so ganz rein. Aber "keine Privatshäre" ist so dämlich ... Dann zeige mir deine letzte Gehaltsabrechnung, deinen Kontoauszug und die Liste deiner Passwörter.
Und auf einmal ist die zuvor verleugnete Privatspäre selbst für den DAU (dümmsten anzunehmenden User) ganz wichtig.
Hallo Linuchs,
Zu argumentieren, dass Sie keine Privatsphäre brauchen, weil Sie nichts zu verbergen haben, ist so, ...
Gehört hier zwar nicht so ganz rein. Aber "keine Privatshäre" ist so dämlich ...
Wieso?
Dieser Vergleich in meinem Zitat ist eine gute Möglichkeit, um dieses „Ich habe ja nichts zu verbergen!“ zu entkräftigen.
Dann zeige mir deine letzte Gehaltsabrechnung, deinen Kontoauszug und die Liste deiner Passwörter.
Tue ich garantiert nicht – Worauf genau willst du hinaus?
Und auf einmal ist die zuvor verleugnete Privatspäre selbst für den DAU (dümmsten anzunehmenden User) ganz wichtig.
Die „Datenabflüsse“ durch mangelnde Privatssphäre wurde treffend – wie ich finde – mit Radioaktivität verglichen – der Durchschnittsnutzer nimmt sie nicht wahr, ärgert sich aber umso mehr, wenn mal etwas passiert. Hier ist (auch) die Politik gefragt.
Gruß
Julius
P.S.: Ich habe mal die Tags angepasst.
--
Zu argumentieren, dass Sie keine Privatsphäre brauchen, weil Sie nichts zu verbergen haben, ist so, als würden Sie sagen, dass Sie keine Freiheit der Meinungsäußerung brauchen, weil Sie nichts zu sagen haben.
Ich würd' mal eher sagen, dass niemand selbst darüber bestimmt was er zu verbergen hat. Genau das bestimmen nämlich andere.
Schönen Abend.
Ich würd' mal eher sagen, dass niemand selbst darüber bestimmt was er zu verbergen hat. Genau das bestimmen nämlich andere.
Sehe ich anders. Es gibt so viele Daten, die in Kombination etwas über dich verraten, was du gar nicht preisgebn willst.
Da gibt es vielleicht die Webseite deines Vereins, auf der du als Mitglied, Vorstand oder Ansprechpartner genannt bist. Und unter Termine steht, dass dein Verein vom 29.06. - 02.07. auf einer Reise ist. Zwei Einbrecher kombinieren: Haus wahrscheinlich nicht bewacht. Und dann gibt's Zanke vor Ort, wer zuerst da war.
Und doch - du hast Recht, wenn es darum geht, was erst später von Bedeutung sein wird. Wer hatte 1925 ein Problem damit, Jude zu sein? Die Offenheit war 10 Jahre später lebensgefährlich.
Hallo und guten Abend,
Und doch - du hast Recht, wenn es darum geht, was erst später von Bedeutung sein wird. Wer hatte 1925 ein Problem damit, Jude zu sein? Die Offenheit war 10 Jahre später lebensgefährlich.
Die Verfolgung hat nicht erst 1933 begonnen, auch wenn die dann besonders schlimm wurde.
Geschichte der Judenverfolgung
Man muss es wohl Hollerith zuschreiben, dass im Dritten Reich so "effektiv" gearbeitet wurde. Da konnte sich dann auch niemand mehr gegen die Kopie und Weitergabe seiner Personenerfassungskarte an die anderen Gaue wehren.
Von dieser technischen Grundlage für den Holocaust spricht aber heute kaum noch jemand. Man könnte damit ja das Image von IBM beschmutzen :-(
Liebe Grüße
TS
Hallo Linuchs,
Es gibt so viele Daten, die in Kombination etwas über dich verraten, was du gar nicht preisgebn willst.
„Nicht du bestimmst, was du an Daten preisgibst, sondern deine Feinde, was sie aus ihnen lesen!“ war auch Thema beim 33. Chaos Communication Congress, zwei sehr interessante Vorträge:
Und doch - du hast Recht, wenn es darum geht, was erst später von Bedeutung sein wird. Wer hatte 1925 ein Problem damit, Jude zu sein? Die Offenheit war 10 Jahre später lebensgefährlich.
Der Heise-Verlag hatte da mal ein Editorial, das das gut auf den Punkt brachte: Nichts zu verbergen?
Aus der Gegenwart würde ich da die (vorläufig gestoppte) Daten-Zusammenführung von WhatsApp und Facebook, die trotz anders lautenden Versprechen bei der Übernahme stattfand (nicht, dass da jemand ernsthaft drauf vertraut hat...).
Gruß
Julius
--
Zu argumentieren, dass Sie keine Privatsphäre brauchen, weil Sie nichts zu verbergen haben, ist so, als würden Sie sagen, dass Sie keine Freiheit der Meinungsäußerung brauchen, weil Sie nichts zu sagen haben.
@@Julius
Aus der Gegenwart würde ich da die (vorläufig gestoppte) Daten-Zusammenführung von WhatsApp und Facebook, die trotz anders lautenden Versprechen bei der Übernahme stattfand (nicht, dass da jemand ernsthaft drauf vertraut hat...).
Uber wants to use Facebook data to show what you have in common with other UberPool passengers
Wie Aral Balkan sagt: surveillance capitalism.
LLAP 🖖
Hier ist (auch) die Politik gefragt.
Den Verweis "auf andere", die dir deine Rechte sichern sollen, auf die du (noch) keinen Wert legst, finde ich unmündig.
Man muss gelegentlich seine Rechte persönlich wahrnehnmen, um zu testen, ob sie noch gelten. Das unverbindliche Geschwafel Unbeteiligter ist vollkommen wertlos.
Ich bin gerade dabei, ein paar hundert Euro für Gerichtskosten auszugeben. Ich möchte wissen, ob das Grundgesetz Art 5 noch gilt:
(1) Jeder hat das Recht, seine Meinung in Wort, Schrift und Bild frei zu äußern und zu verbreiten und sich aus allgemein zugänglichen Quellen ungehindert zu unterrichten. Die Pressefreiheit und die Freiheit der Berichterstattung durch Rundfunk und Film werden gewährleistet. Eine Zensur findet nicht statt.
Unter "ungehindert" verstehe ich, kostenpflichtige Quellen frei wählen zu können und nicht durch die Rundfunkgebühr finanziell gehindert zu werden.
Ich möchte den Hörfunk und zahle die alte Hörfunkgebühr. Aber ich interessiere mich nicht für das Fernsehen und habe kein Gerät für dessen Empfang. Ich möchte das Fernsehen nicht "kostenlos", sondern "gar nicht".
Schon interessant, welchem der gegensätzlichen Gesetze ich vertrauen darf. Da muss man ein paar mal im Leben in die Tasche greifen, um Lehrgeld zu zahlen.
Hallo Linuchs,
Hier ist (auch) die Politik gefragt.
Den Verweis "auf andere", die dir deine Rechte sichern sollen, auf die du (noch) keinen Wert legst, finde ich unmündig.
Was Datensparsamkeit und Verschlüsselung angeht, können wir technisch einiges machen, aber bei Voratsdatenspeicherung und anderer Meta-Daten-Spionage können wir allein wenig unternehmen. Auch bei Verbesserung Medienkompetenz der breiten Bevölkerung ist der Staat gefragt – er hätte Ende-zu-Ende-Verschlüsselung flächendeckend einführen können[1] und Aufklärung betreiben können, aber das ist offensichtlich nicht Ziel der „Entwickeln Sie ein positives Verhältnis zu Daten und kein restriktives. Freuen Sie sich, wenn wir mehr wissen.“-Kanzlerin[2].
Nun, du siehst das als „unmündig“ an, aber letztlich wird die Politik vom Volk bestimmt, das wir alle nun mal sind und wir können (und sollten!) dieses Jahr entscheiden, wo es lang gehen soll. Hoffentlich überleben die Menschenrechte, Demokratie und die Europäische Union dieses Jahr.
Unter "ungehindert" verstehe ich, kostenpflichtige Quellen frei wählen zu können und nicht durch die Rundfunkgebühr finanziell gehindert zu werden.
Ich möchte den Hörfunk und zahle die alte Hörfunkgebühr. Aber ich interessiere mich nicht für das Fernsehen und habe kein Gerät für dessen Empfang. Ich möchte das Fernsehen nicht "kostenlos", sondern "gar nicht".
Ohne die Öffentlich-Rechtlichen würde ich kein Fernsehen mehr schauen wollen, die Privaten sind nicht zu ertragen. Nur finanzieren muss man sie schon irgendwie, eine gerechte und zweckmäßige Lösung[3] wird man wohl nie finden können.
Gruß
Julius
--
Zu argumentieren, dass Sie keine Privatsphäre brauchen, weil Sie nichts zu verbergen haben, ist so, als würden Sie sagen, dass Sie keine Freiheit der Meinungsäußerung brauchen, weil Sie nichts zu sagen haben.
De-Mail und Konsorten waren ja bekanntlich per Gesetz für sicher erklärter Mist. ↩︎
Rede von Bundeskanzlerin Merkel anlässlich des Tags des deutschen Familienunternehmens am 12. Juni 2015 ↩︎
Ein ordentliches Programm, das nicht nur aus eingekauften Soaps und Dschungelcamp besteht, kostet nun mal. ↩︎
Hallo Julius,
Ohne die Öffentlich-Rechtlichen würde ich kein Fernsehen mehr schauen wollen, die Privaten sind nicht zu ertragen. Nur finanzieren muss man sie schon irgendwie, eine gerechte und zweckmäßige Lösung[^3] wird man wohl nie finden können.
Mir ist ausser Rundfunk keine Leistung bekannt, die auf sämtliche Bürger umgelegt wird, egal, ob sie es nutzen oder nicht.
Fernsehsignale kann man verschlüsseln und Abonnements verkaufen.
Hallo Linuchs,
Mir ist ausser Rundfunk keine Leistung bekannt, die auf sämtliche Bürger umgelegt wird, egal, ob sie es nutzen oder nicht.
Indirekt nützen die Öffentlich-Rechtlichen aber auch allen, weil sie sich um eine möglichst neutrale Berichterstattung bemühen und damit die deutsche Medienlandschaft verbessern, was letztlich die Privaten unter Druck setzt (und umgekehrt).
Fernsehsignale kann man verschlüsseln und Abonnements verkaufen.
Die Österreicher machen das bei DVB-T so. Finde ich aber nicht gut, weil das unnötig den technischen Aufwand erhöht.
Gruß
Julius
--
Zu argumentieren, dass Sie keine Privatsphäre brauchen, weil Sie nichts zu verbergen haben, ist so, als würden Sie sagen, dass Sie keine Freiheit der Meinungsäußerung brauchen, weil Sie nichts zu sagen haben.
Hallo
Ohne die Öffentlich-Rechtlichen würde ich kein Fernsehen mehr schauen wollen, die Privaten sind nicht zu ertragen. Nur finanzieren muss man sie schon irgendwie, eine gerechte und zweckmäßige Lösung[^3] wird man wohl nie finden können.
Mir ist ausser Rundfunk keine Leistung bekannt, die auf sämtliche Bürger umgelegt wird, egal, ob sie es nutzen oder nicht.
Öhhm, Straßen, Polizei, Schulen …
Fernsehsignale kann man verschlüsseln und Abonnements verkaufen.
Das kann man mit Rundfunksignalen auch tun. Die unterscheiden sich ja nicht grundsätzlich von TV-Signalen. Das würde aber in Deutschland für den ÖR-Bereich mit den gesetzlichen Vorgaben für den öffentlichen Rundfunk kollidieren.
Tschö, Auge
Hello,
Ohne die Öffentlich-Rechtlichen würde ich kein Fernsehen mehr schauen wollen, die Privaten sind nicht zu ertragen. Nur finanzieren muss man sie schon irgendwie, eine gerechte und zweckmäßige Lösung[^3] wird man wohl nie finden können.
Mir ist ausser Rundfunk keine Leistung bekannt, die auf sämtliche Bürger umgelegt wird, egal, ob sie es nutzen oder nicht.
Öhhm, Straßen, Polizei, Schulen …
Falsch verstanden!
KH meint hier Belastungen des Einzelnen, die absolut pro Person gelten und nicht anteilig (z. B. über Steuern finanziert).
Die Rundfunkgebühren (nebst weniger anderer) bilden eine eigene Kostenklasse:
Und eben diese absolute Kostenklasse, der man nicht entrinnen kann oder nur gegen Antrag (Rundfunkgebühren) widersprechen kann, sind mit der angeblich noch geltenden sozialen Grundordnung nicht vereinbar. Hier werden die individuellen wirtschaftlichen Fähigkeiten des Einzelnen nicht berücksichtigt. Ein fetter SUV-Eigentümer (!) kann 25€ Strafmandat für Falschparken leichter wegstecken, als der alleinerziehnder Vater von drei Kindern, der sich nur mit Kredit einen alten Passat (Familenkutsche) leisten kann. Und warum der dann für seinen Rundfunkempfang (den er gar nicht haben will) genauso viel zahlen muss, wie derjenige, der die Inhalte vorgibt (der fette SUV-Fahrer), ist nach unserer Verfassung (Grundgesetz) nicht nachvollziehbar.
So habe ich Linuchs verstanden und diese These wäre also zu prüfen. Das kann man als aufrechter Demokrat und Diskutant auch tun, auch wenn man nicht derselben Ansicht ist, zumindest, wenn man ehrlich ist!
[1] einen Pass muss man nicht haben, kommt dann als Argument. Man muss das Land ja nicht verlassen. Der Besitz eines Personaldukumentes ist aber vorgeschrieben.
Liebe Grüße
Tom S.
Hallo
Ohne die Öffentlich-Rechtlichen würde ich kein Fernsehen mehr schauen wollen, die Privaten sind nicht zu ertragen. Nur finanzieren muss man sie schon irgendwie, eine gerechte und zweckmäßige Lösung[^3] wird man wohl nie finden können.
Mir ist ausser Rundfunk keine Leistung bekannt, die auf sämtliche Bürger umgelegt wird, egal, ob sie es nutzen oder nicht.
Öhhm, Straßen, Polizei, Schulen …
Falsch verstanden!
Wieso? Er kennt – so schreibt er zumindest – keine Leistung, die auf sämtliche Bürger umgelegt wird, ich nenne ihm ein paar Leistungen. Was er „meint“ (soweit das aus den vorigen Postings zu schließen ist) ist nicht, was er schreibt. Und in Hinsicht auf sein Argumentationsziel, die Regel, für etwas zahlen zu müssen, ob man es nutzt oder nicht, in Zweifel zu ziehen, ist es mMn egal, ob es um eine feststehende Gebühr oder eine flexible Summe geht. In beiden Fällen kann es mir passieren, für etwas zu zahlen, das ich selbst nicht nutze.
Die Rundfunkgebühren (nebst weniger anderer) bilden eine eigene Kostenklasse:
Ja, und nun? Es gibt Dinge, die muss man haben und für die ist von jedem der gleiche Preis zu entrichten. Der Rundfunkbeitrag gehört wie der PA dazu, der Pass nicht, der ist nicht verpflichtend. Man braucht ihn zwar für bestimmte Reiseziele und er kann als Ersatz für einen nicht vorhandenen PA herhalten, aber sein Besitz ist kein Muss. Dass PA und Pass etwa im letzen Jahrzehnt hyperinflationäre Preissteigerungen hingelegt haben, sei mal dahingestellt.
Und eben diese absolute Kostenklasse, der man nicht entrinnen kann oder nur gegen Antrag (Rundfunkgebühren) widersprechen kann, sind mit der angeblich noch geltenden sozialen Grundordnung nicht vereinbar.
Von einer „sozialen Grundordnung“ als (für dich offensichtlich) feststehendem Begriff lese ich soeben erstmalig [1]. Selbst wenn meine im Text der Fußnote ([1:1]) geäußerte Vermutung zutrifft, sehe ich keine Unvereinbarkeit. Die solltest du bitte genauer als nur mit der Nichtberücksichtigung der individuellen wirtschaftlichen Fähigkeiten des Einzelnen erläutern. Wir reden hier ja nicht von monatlichen Ausgaben von erheblicher Höhe, sondern von momentan 17,50 €/Monat/Haushalt.
Hier werden die individuellen wirtschaftlichen Fähigkeiten des Einzelnen nicht berücksichtigt.
Ernsthaft? Ich bin nicht der Meinung, dass die für die GEZ quartierlich zu zahlende Summe bei Mitbürgern, die nicht auf Sozialleistungen angewiesen sind (die sind ja so ziemlich die Einzigen, die von der Zahlung befreit werden), die individuellen wirtschaftlichen Fähigkeiten übersteigen kann.
Ein fetter SUV-Eigentümer (!) kann 25€ Strafmandat für Falschparken leichter wegstecken, als der alleinerziehnder Vater von drei Kindern, der sich nur mit Kredit einen alten Passat (Familenkutsche) leisten kann.
Dann soll der eine und auch der andere nicht falsch parken. Schon behalten beide die fragliche Summe bei sich.
Und warum der dann für seinen Rundfunkempfang (den er gar nicht haben will) genauso viel zahlen muss, wie derjenige, der die Inhalte vorgibt (der fette SUV-Fahrer), ist nach unserer Verfassung (Grundgesetz) nicht nachvollziehbar.
SUV-Fahrer sind per se identisch mit Programmgestaltern oder gar -direktoren? Komische Logik. Und was das mit dem Grundgesetz zu tun haben soll, erschließt sich mir nicht.
Natürlich kann man diskutieren, ob die Regel, dass alle Haushalte unabhängig von der Verfügbarkeit eines Empfangsgerätes gebührenpflichtig sind, stimmig ist. Dass heutzutage ein Haushalt existiert, in dem es kein passendes Empfangsgerät gibt (was ja die Grundlage der Regel ist), dürfte die absolute Ausnahme sein.
Ob jemand das auch von ihm/ihr bezahlte Angebot nicht nutzen mag, ist seine/ihre Sache. Ich bezahle den privaten Rundfunk mit meinen Einkäufen ja auch mit, ohne ihn im annähernden Gegenwert zu nutzen. Oder was glaubst du, wer die Werbeetats finanziert? Ebenso finanziere ich mit meinen Steuern Schulen mit, die ich selbst nicht besuche. Dabei ist der Umstand, dass das eine eine feste Gebühr und das andere einkommens- und ausgabenabhängig ist, meiner Meinung nach unerheblich. Ich bezahle für etwas, dass ich (vordergründig) nicht nutze.
Wo bitte ist der Verstoß gegen einen Artikel oder auch den Geist des Grundgesetzes?
einen Pass muss man nicht haben, kommt dann als Argument. Man muss das Land ja nicht verlassen. Der Besitz eines Personaldukumentes ist aber vorgeschrieben.
Ja, aber der Besitz des Passes ist eben nicht vorgeschrieben. Das Argument mag lästig sein, im hiesigen Kontext ist es mMn passend.
Tschö, Auge
... um nochmal auf deinen Titel "PHP-Variable in JavaScript nutzen" zu antworten.
Ja klar geht das. Erzeuge mit PHP Javascript Code und schreibe ihn in das HTML-Dokument:
$_POST['name'] = 'Andreas';
$_POST['beruf'] = 'Maler';
$javascript = "
<script>
var name = '".$_POST['name']."';
var beruf = '".$_POST['beruf']."';
alert( name +' ist ' +beruf );
</script>
";
echo $javascript;
Ergebnis: Andreas ist Maler
Tach!
... um nochmal auf deinen Titel "PHP-Variable in JavaScript nutzen" zu antworten.
Ja klar geht das.
Nein, es geht nicht. Der Unterschied mag Wortklauberei sein, aber er ist wichtig für das Verständnis für den Fehler, der in deinem Code steckt.
PHP-Variablen sind nicht in Javascript nutzbar. Wohl aber kann der Wert in der Variablen in Javascript nutzbar gemacht werden, indem man:
Erzeuge mit PHP Javascript Code und schreibe ihn in das HTML-Dokument:
Genau, man erzeugt also neuen Code mit dem Inhalt dem Variableninhalt als Literal. Ein Literal ist die Darstellung eines Wertes, so wie er geschrieben werden muss, um gültigen Code zu erzeugen. Das Literal des Strings foo ist "foo"
, also der Wert eingerahmt in Anführungszeichen. Und dann gibts da noch die Sonderregeln für Anführungszeichen (und andere), die nämlich als Escape-Sequenz geschrieben werden müssen.
$_POST['name'] = 'Andreas'; $_POST['beruf'] = 'Maler'; $javascript = " <script> var name = '".$_POST['name']."'; var beruf = '".$_POST['beruf']."'; alert( name +' ist ' +beruf ); </script> ";
Und diese Sonderregeln beachtet dieser Code nicht. Andreas und Maler sind zwei Strings ohne Anführungszeichen, da fällt das nicht weiter auf. Aber wenn jemand Anführungszeichen (in diesem Fall einfache '
) in ein Eingabefeld eingibt, dann gibt es zumindest einen Syntaxfehler im Javascript-Code. Im ungünstigsten Fall kann das zum Ausführen beliebigen untergeschobenen Codes führen. Das ist eine der häufigsten Sicherheitslücken.
Diese Problematik, und auch wie man das für Javascript verhindert, ist in unserem Wiki unter Kontextwechsel beschrieben.
dedlfix.
Moin,
Und diese Sonderregeln beachtet dieser Code nicht. Andreas und Maler sind zwei Strings ohne Anführungszeichen, da fällt das nicht weiter auf. Aber wenn jemand Anführungszeichen (in diesem Fall einfache
'
) in ein Eingabefeld eingibt, dann gibt es zumindest einen Syntaxfehler im Javascript-Code.
Ja. Das PHP-Zauberwort für die Ausgabe als Javascript-Code ist addslashes(). Hier mein verbesserter Code:
$_POST['name'] = "Paddy's Passion";
$_POST['beruf'] = 'eine "Rockband"?';
$javascript = "
<script>
var name = '".addslashes($_POST['name'])."';
var beruf = '".addslashes($_POST['beruf'])."';
alert( name +' ist ' +beruf );
</script>
";
echo $javascript;
Hallo und guten Tag,
Ja. Das PHP-Zauberwort für die Ausgabe ist addslashes(). Hier mein verbesserter Code:
$_POST['name'] = "Paddy's Passion"; $_POST['beruf'] = 'eine "Rockband"?'; $javascript = " <script> var name = '".addslashes($_POST['name'])."'; var beruf = '".addslashes($_POST['beruf'])."'; alert( name +' ist ' +beruf ); </script> "; echo $javascript;
Was ist denn eigentlich mit HTML-reservierten Zeichen, insbesondere "<" und ">"?
Dürfen die in den Daten enthalten sein?
Liebe Grüße
TS
Was ist denn eigentlich mit HTML-reservierten Zeichen, insbesondere "<" und ">"?
Dürfen die in den Daten enthalten sein?
Spontan schreibe ich "ja", wir haben PHP und Javascript, aber kein HTML. Aber testen wir das doch. Habe gleich noch eine weitere Fiesheit eingebaut, einen deutschen Umlaut:
$_POST['name'] = "Paddy's Passion";
$_POST['beruf'] = 'eine >"Rockband"< mit < 5 Sängern?';
$javascript = "
<script>
var name = '".addslashes($_POST['name'])."';
var beruf = '".addslashes($_POST['beruf'])."';
alert( name +' ist ' +beruf );
</script>
";
echo $javascript;
Ergebnis: Paddy's Passion ist eine >"Rockband"< mit < 5 Sängern?
Und wenn wir schon bei den Schweinereien sind, ich teste gerne noch mal frechgrins
Tach!
Was ist denn eigentlich mit HTML-reservierten Zeichen, insbesondere "<" und ">"?
Dürfen die in den Daten enthalten sein?Spontan schreibe ich "ja", wir haben PHP und Javascript, aber kein HTML. Aber testen wir das doch. Habe gleich noch eine weitere Fiesheit eingebaut, einen deutschen Umlaut:
Die korrekte Vorgehensweise, eine solche Frage zu klären, wäre sich in der Javascript- und HTML-Spezifikation anzuschauen, welche Sonderregeln für welche Zeichen zu beachten sind. Raten und Testen kann zu Lücken führen, die man beim Testen ausgelassen hat.
dedlfix.
Hallo Linuchs,
Spontan schreibe ich "ja", wir haben PHP und Javascript, aber kein HTML.
Wir haben Javascript im HTML-Kontext. Als einzelne Datei muss man wahrscheinlich kein htmlspecialchars
drüber jagen.
Hier funktioniert es aber nicht (es ist ein </script>
im String...):
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Titel</title>
</head>
<body>
<?php
$_POST['name'] = "Paddy's Passion";
$_POST['beruf'] = 'eine >"Rockband"< mit < 5 Sängern? </script>';
$javascript = "
<script>
var name = '".addslashes($_POST['name'])."';
var beruf = '".addslashes($_POST['beruf'])."';
alert( name +' ist ' +beruf );
</script>
";
echo $javascript;
?>
</body>
</html>
Gruß
Julius
--
Zu argumentieren, dass Sie keine Privatsphäre brauchen, weil Sie nichts zu verbergen haben, ist so, als würden Sie sagen, dass Sie keine Freiheit der Meinungsäußerung brauchen, weil Sie nichts zu sagen haben.
Tach!
Was ist denn eigentlich mit HTML-reservierten Zeichen, insbesondere "<" und ">"?
Dürfen die in den Daten enthalten sein?
Kommt drauf an, wo das Javascript am Ende steht. Im <script>-Bereich ist nur wichtig, dass man </
maskiert, der Rest wird vom HTML-Parser ignoriert und wird literal an Javascript durchgereicht.
dedlfix.
Tach!
Ja. Das PHP-Zauberwort für die Ausgabe als Javascript-Code ist addslashes().
Auch wieder: nein. Es gibt kein Zauberwort in PHP, das Javascript-Code korrekt behandelt. Zeilenumbrüche werden von addslashes() nicht berücksichtigt und die ergeben ungültigen Javascript-Code. Man braucht eine selbstgeschriebene Funktion, um alle Zeichen korrekt zu behandeln.
dedlfix.
Tach!
Es gibt kein Zauberwort in PHP, das Javascript-Code korrekt behandelt.
Nachtrag: json_encode() kann helfen, aber das maskiert nicht nur, sondern quotiert auch (also fügt Anführungszeichen hinzu).
dedlfix.
Hallo und guten Tag Piewi,
vielleicht hilft es Dir, wenn Du dich zuvor mit Sessions beschäftigst?
Und mMn könnte es für Dich auch hilfreich sein, mal bei Google (Bildersuche) nach "Client Server Prinzip Webseite" zu suchen. Da gibt es einige sehr schöne grafische Darstellungen, die das Prinzip verdeutlichen. Die Links darauf bekomme ich jetzt mit dem Tablet leider nicht hin...
Liebe Grüße
TS