Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - Javascript a php
Forum - PHP - Javascript a php

Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 14:16
Venerdì, 30/10/2015
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

  1. <script>
  2.  
  3. var uid = localStorage.getItem('Chiave');
  4.  
  5. </script>
  6.  
  7.  
  8. <?php
  9.  
  10. $valore = "<script>document.writeln(uid);</script>";
  11.  
  12. echo $valore;
  13.  
  14. ?>




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

  1. echo strlen($valore);




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


PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6114
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:02
Venerdì, 30/10/2015
Codice sorgente - presumibilmente PHP

  1. 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.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
GN (Member)
Guru


Messaggi: 770
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 21:07
Venerdì, 30/10/2015
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).


PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 8:35
Lunedì, 02/11/2015
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

  1. 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/


PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1127
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 16:48
Lunedì, 02/11/2015
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.


La programmazione è arte... fa che i tuoi script siano degni di un museo.
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 9:48
Martedì, 03/11/2015
Testo quotato

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?


PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1127
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 16:16
Martedì, 03/11/2015
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.


La programmazione è arte... fa che i tuoi script siano degni di un museo.
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 16:59
Martedì, 03/11/2015
Si ho appena testato e funziona benissimo grazie dell'immenso aiuto Roby. :k:


PM Quote