2016-05-06 9 views
-1

Ich habe ein HTML/PHP Composite-Dokument, das die Login-Variable von einem Benutzer verwendet. (Das kam aus einer separaten PHP-Datei auf signin):Wie übergibt man eine PHP-Variable von einer PHP-Datei an die JS-Datei?

<html> Welcome <?php echo $login; ?> </html> 

//Now when the user uses the chatbox, and clicks send, I would like to pass the data (inclusive of the username) from this html file to the .js so it can in turn pass onto another php file. (ps I tried the following but to no avail, as the .js file is external to the html/php composite): 

    $("#newMsgSend").click(function()//triggers script to send the message 
     { 
      $("#newMsgCnt").val(''); // clears the box when the user sends a message 
      var username = "<?php echo $login; ?>"; 
      alert(username); 
     }); 
+0

Woher bekommst du $ login? Wo ist es zugewiesen? Wie wird es an die HTML-Seite überhaupt weitergegeben? – shamsup

+0

Sie sollten den "var username" in einem globalen Bereich zuerst verwenden können? Entfernen Sie es einfach aus der jQuery-Funktion, in der es verschachtelt ist? – Rasclatt

+0

In dem Moment, in dem ich auf "Senden" klicke, erscheint die Meldung als Benutzername. also weiß ich, dass es die Variable nicht liest. –

Antwort

3

Ihre aktuellen Code wahrscheinlich ist ein XSS vulnerability einzuführen. Stattdessen Vorteil aus der Tatsache zu ziehen, dass gültige JSON gültig JavaScript ist:

var username = <?php echo json_encode($login); ?>; 

In einigen Situationen kann es auch besser sein, ein XMLHttpRequest oder WebSocket zu verwenden, die die Daten von einer anderen URL anfordert (in der Regel als einfacher Text codierte, XML oder JSON). Ein Szenario dafür wäre, den Benutzer zu benachrichtigen, sobald neue Elemente hinzugefügt wurden, nachdem der Benutzer die Webseite geladen hat.

+0

Neben XSS würde eine Registerkarte innerhalb der Zeichenfolge Ihre Seite –

+0

@Juan Mendes brechen Wie geht das? [Hier ist die gerenderte Seite mit einem Tab] (https://jsfiddle.net/phihag/abqk6g7h/), funktioniert gut für mich. – phihag

+0

eigentlich hat er recht. es hat mein Skript aus irgendeinem Grund brechen lol –

0

Wenn der Benutzer sich anmeldet, erstellen Sie eine Sitzung für diesen Benutzer und füllen Sie ihn mit den Daten (wie Benutzername, E-Mail, Telefonnummer oder was auch immer) aus der Datenbank - vorausgesetzt, die Anmeldung ist korrekt und authentisch:

$_SESSION['user'] = $row; //where $row is the row of data returned from the db 

dann, wenn Sie diese Informationen zugreifen möchten, sind im Anschluss an die am oberen Rand der Seite:

session_start(); 

und dann die solche Informationen zugreifen, als

$userfirst_name=$_SESSION['user']['first_name']; 

dann wird Ihr html so etwas wie:

<h1> Welcome <?php echo "$userfirst_name"; ?> </h1> 

beachten Sie, dass Sitzungsbeginn am Anfang jeder Seite sein müssen Sie die sessiobn Variablen zugreifen wollen, sind. Dann die Benutzerdetails zu löschen (zB wenn sich der Benutzer abmeldet Sie Folgendes verwenden:

unset($_SESSION["user"]); 
-2

Dank beide. Ivan Rodriguez Torres und phihag bekam ich eine Lösung irgendwo in der Mitte der beiden Beiträge:

<input id="login" readonly type="text" <?PHP echo "value= '$login'/>"; ?> 

Ivan Vorschlag war irgendwie einen „undefiniert“ Variable für mich zurück. Die oben genannten Arbeiten wie ein Charme though. Hoffen, dass seine sicheren und doesnt führen zu Problemen.

nochmals vielen Dank Jungs

+0

Wenn Sie dies als Teil eines Formulars verwenden, benötigen Sie ein Namensattribut, da dieses nicht im Formular enthalten ist.Auch Ihr Echo ist an der falschen Stelle, Sie brauchen nicht den Wert = Teil im Echo - nmakes für weniger Lesbarkeit im Code. - Es sollte value = "" sein und dann die Eingabe außerhalb von PHP schließen ... />; – gavgrif

+0

Sie müssen mich verarschen, dass Sie mit dieser Option nach einem großen Vorschlag von Phihag ging, ist Ihr Code anfällig für XSS. –

Verwandte Themen