Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
Ragazzi ho un problema strano.
non riesco a passare correttamente un valore da variabile javascript a php
ho utilizzato questo procedimento
Codice sorgente - presumibilmente PHP |
<script> var uid = localStorage.getItem('Chiave'); </script> <?php $valore = "<script>document.writeln(uid);</script>"; echo $valore; ?>
|
Fin qui tutto bene.
Se faccio echo $valore a video viene mostrato esettamente il valore ricavato senza spazi vuoti ecc. ecc.
Ma dal momento che utilizzo quel valore per una verifica non funziona.
del tipo, per debuggare faccio
Codice sorgente - presumibilmente Plain Text |
mi appare 39
e dico come??
Se il valore massimo è compreso tra 1 e 10 come mi ritrovo una stringa lunga 39 caratteri?
che poi quando vado a stamparla a video e provo a selezionarla, mi seleziona un solo carattere ovvero il valore reale
contenente.
Come mai ho questo problema?
sbaglio forse qualcosa? Ultima modifica effettuata da Thejuster il 30/10/2015 alle 14:17
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Codice sorgente - presumibilmente PHP |
strlen("<script>document.writeln(uid);</script>") == 39 // <-- true
|
Non puoi passare parametri da JS a PHP in questa maniera. PHP viene eseguito lato server, Javascript è eseguito lato client. Devi fare una richiesta ajax tramite Javascript ad una pagina PHP, passando i parametri tramite POST o GET. Alcune librerie come jQuery rendono questo compito più facile tramite .ajax oppure .post o .get.
|
|
GN (Member)
Guru
Messaggi: 772
Iscritto: 30/04/2011
|
In aggiunta a quanto detto da Piero: con echo $valore ottieni il risultato corretto ma perchè è il browser ad eseguire quella riga di Javascript. Il codice PHP viene eseguito dal server, e finita l'esecuzione il risultato viene inviato al browser del client che esegue il Javascript. Del resto, nel codice lato server "<script>document.writeln(uid);</script>" non è che un letterale stringa (per il server è identico a "ciao"), non certo un qualcosa che viene eseguito (fra l'altro siccome usi PHP immagino che il server non sia nemmeno in grado di interpretare codice JS).
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
Grazie per i consigli.
Il problema sinceramente è un'altro.
Mi darete sicuramente del pazzo e poco professionale.
Ma siccome i clienti mi stanno tartassando per avere il sito pronto nel più breve tempo possibile
mi stanno facendo "arronzare" il più possibile per consegnarlo per la data prevista.
In un qualche modo, non riesco i nessun modo ad utilizzare i coockie nella pagina principale del sito
il sito in pratica fa questo gioco
/www/index.php
Se Mobile -> www/m/index.php
Se Computer -> www/w/index.php
fà una sorta di include per determinare il modello da aprire.
Ho realizzato poi un pannello amministrativo per la gestione di tutti i contenuti multimediali del sito.
Come l'inserimento di foto, l'upload di materiale vario, gestione pagine, news etc.
I coockie dal pannello ammistrativo funzionano
mentre dal sito web non funzionano
Uso lo stesso procedimento che ho usato nel pannello amministrativo ovvero
Codice sorgente - presumibilmente Plain Text |
setcookie("chiave","valore");
|
Dalla pagina admin funziona, dal sito web nulla.
Mi sapete dire come mai?
(Il sito è ancora in costruzione scusate per i vari errori)
per questo motivo, per velocizzare il tutto ho deciso di utilizzare il web storage
che funziona tranquillamente. mentre i coockie no.
se volete darci un occhiata:
http://www.associazionearcasi.it/
|
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
setcookie deve essere eseguito prima di qualsiasi output dell'interprete. Inoltre ti farei prestare attenzione alla gestione dei sottodomini in relazione ai cookie, che di default non possono essere condivisi tra questi.
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
Postato originariamente da Roby94:
setcookie deve essere eseguito prima di qualsiasi output dell'interprete. Inoltre ti farei prestare attenzione alla gestione dei sottodomini in relazione ai cookie, che di default non possono essere condivisi tra questi. |
Questo non lo sapevo....
Mi è nuova questa cosa....
Cioè credevo di poter settare i coockie quando volevo e quando potevo.
non ho capito il secondo suggerimento riguardo alla relazione.
il coockie non và a registrarsi direttamente al dominio?
|
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
Eh si e ti spiego anche il perché, l'invio di cookie fa parte della header della risposta http, per tanto va generata prima che questa venga terminata, quindi prima che venga generato un output. Effettivamente setcookie() è una maschera di header(). Dai un occhiata sulle reference ufficiali di PHP.
http://php.net/manual/en/function.setcookie.php
Per quanto riguarda la mia seconda affermazione prova a leggere come funziona il parametro domain di setcookie.
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
Si ho appena testato e funziona benissimo grazie dell'immenso aiuto Roby.
|
|