[PHP] Istruzione condizionale con valori booleani

enzogar

Nuovo Utente
3 Ago 2016
30
0
6
Buongiorno.
Il mio problema è questo: su una pagina php utilizzo un servizio di geolocalizzazione (con il quale, in base alla nazionalità del visitatore, faccio apparire nella pagina la bandiera del suo paese) e che permette anche di sapere se quel visitatore sta visualizzando quella pagina su un dispositivo mobile o no, tramite una query che come risultato mi fornisce due valori booleani: true o false.

In caso di valore true, vorrei che il visitatore venga reidirizzato automaticamente su un'altra pagina, ottimizzata per la visione su dispositivi mobili.

Ho provato con questo codice, ma sembra che non venga rilevato il valore booleano (e l'istruzione condizionale non viene eseguita):
PHP:
$mobile = $query['mobile'];
if ($mobile == true) {$messaggio = " Stai accedendo da un dispositivo mobile" ; header("Location: pagina_ottimizzata_mobile.html");
};

Per capire se in effetti la query sul campo 'mobile' mi restituisca correttamente i valori in caso di connessione da mobile o fisso, ho fatto una prova, usando
PHP:
var_dump($query);
che mi stampa a video questo risultato:
["mobile"]=> bool(false)

Quindi il problema è che alla stringa $mobile non viene assegnato il valore true (o false), o c'è un errore nell'istruzione condizionale, ho provato in vari modi ma non funziona... Qualcuno può aiutarmi a scrivere il codice corretto?

Grazie
 
Ultima modifica di un moderatore:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.345
337
83
@enzogar
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code-gif.6007
o il tag
php-png.6009
per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box-inserisci-2-png-jpg.6008

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
 

marino51

Utente Attivo
28 Feb 2013
2.975
172
63
Lombardia
geolocalizzazione (con il quale, in base alla nazionalità del visitatore, faccio apparire nella pagina la bandiera del suo paese
se sono momentaneamente in germania per lavoro, non sono necessariamente tedesco (!) e se mi reindirizzi alla pagina nella loro lingua, sono in imbarazzo nel capire ….

se il valore visualizzato con var_dump é "falso", é la query che non restituisce il valore atteso, non il codice che hai postato

in ogni caso quando fai test su "vero" / "falso", usa la notazione

if ($mobile === true) { …...
 

enzogar

Nuovo Utente
3 Ago 2016
30
0
6
Ciao,
ho fatto una prova con l'istruzione condizionale che mi hai consigliato, purtroppo senza nessun risultato...

Ho fatto anche una prova collegandomi dal mio smartphone e la var_dump mi da questo risultato:
["mobile"]=> bool(true) quindi, fino a quel punto è tutto regolare, il problema è fare questa benedetta condizionale, che non viene proprio eseguita (o alla $mobile non viene assegnato nessun valore)...

Ma di solito, come si fanno le istruzioni condizionali su valori booleani? Oppure, come posso trasformare un valore booleano in un valore concreto e metterlo in una stringa (ad esempio, se il valore booleano è 'false' assegno alla stringa $val il valore 0, se è 'true' il valore 1)?

In questo modo risolverei il problema...
 

kastaldi

Nuovo Utente
3 Feb 2016
21
0
3
E se forzi la variabile con
PHP:
$mobile = true;
invece di
PHP:
$mobile = $query['mobile'];
funziona ?
 

enzogar

Nuovo Utente
3 Ago 2016
30
0
6
Forzando la variabile con true, mi restituisce valore 1, ma questo come risolve il mio problema?:confused:
 

kastaldi

Nuovo Utente
3 Feb 2016
21
0
3
Forzando la variabile con true, mi restituisce valore 1, ma questo come risolve il mio problema?:confused:

No, intendevo se forzando la variabile $mobile a true ti esegue il codice (cioè assegna il valore $messaggio e va alla pagina ottimizzata). Stiamo facendo cose ovvie e banali ma sinceramente non saprei più dove sbattere la testa. Poi magari il problema è altrove.
 

macus_adi

Utente Attivo
5 Dic 2017
1.320
88
48
IT/SW
Forzando la variabile con true, mi restituisce valore 1, ma questo come risolve il mio problema?:confused:
Booleano...
PHP:
$a=TRUE; //booleano
$b=1; //intero
//non cambia una cippetta!
if($a && $b){ // bool  TRUE && int 1 = TRUE
    echo 'vero';
}
if($a==$b){ //TRUE = 1
echo 'vero';
}
if($a!==$b){ //bool TRUE != int 1 questo perchè il cast è diverso!
  echo 'vero';
}
$a=TRUE;
$b=FALSE;
if($a<=>$b){
   // b = FALSE = 0
   // a = TRUE = 1
   echo 'b minore di a';
}
Questa la situazione sui bool!
 
Ultima modifica:

enzogar

Nuovo Utente
3 Ago 2016
30
0
6
Grazie Macus_adi per la tua spiegazione.

Da quanto visto finora, credo che il problema sia a monte dell'istruzione condizionale, cioè alla stringa $mobile non viene assegnato nessun valore, ne intero ne booleano, nonostante il var_dump sulla query mi restituisca ["mobile"]=> bool(false) quando mi connetto da PC e ["mobile"]=> bool(true) quando mi connetto con lo smartphone... valori che però non vengono poi assegnati alla $mobile tramite l'assegnazione
PHP:
$mobile = $query['mobile'];
mentre invece con l'altra stringa, che rileva il codice del paese del visitatore
PHP:
$country = $query['country_code'];
non ci sono problemi...

Se riesco a far assegnare il valore corrispondente alla $mobile (true o false, 0 o 1), poi il resto del codice funzionerebbe...
 

fratt

Nuovo Utente
19 Gen 2019
33
4
8
Cosa succede se fai il confronto direttamente con $query[]?
PHP:
 if ($query['mobile']) {$messaggio....
 

enzogar

Nuovo Utente
3 Ago 2016
30
0
6
Non succede niente, ho fatto un semplice test:
PHP:
if ($query['mobile']) echo 'Connessione da mobile';
ma a video non compare nulla...
 

kastaldi

Nuovo Utente
3 Feb 2016
21
0
3
Non so che dire, ho provato a replicare le stesse identiche variabili disseminando il codice di var_dump e funziona tutto alla perfezione, il valore true viene assegnato alla variabile e la condizione if viene eseguita, sia direttamente su $query['mobile'] che su $mobile, il var_dump ritorna bool(true) in ognuno dei due casi.

PHP:
<?php
    $query['mobile']=true;
    var_dump($query);
    if ($query['mobile']) {echo "true1\n";}
  
    $mobile = $query['mobile'];
    var_dump($mobile);
    if ($mobile) {echo "true2";}
?>
 

marino51

Utente Attivo
28 Feb 2013
2.975
172
63
Lombardia
se non hai risolto, ripartendo dal tuo primo post,

c'é un punto e virgola dopo la parentesi graffa che é sbagliato, può generare un errore php
eliminalo e riprova


se non dovesse ancora funzionare
modifica in questo modo e posta tutti i risultati
PHP:
$mobile = $query['mobile'];

var_dump($query); echo "<br /><br />"; var_dump($mobile); echo "<br /><br />";

if ($mobile === true) { echo "Stai accedendo da un dispositivo mobile"; }
else                  { echo "Stai accedendo da un dispositivo fisso";  }
 

enzogar

Nuovo Utente
3 Ago 2016
30
0
6
Finalmente problema risolto! Con il codice postato da Marino51, finalmente la $mobile prende il valore corretto.
Non ho ben capito il motivo per cui prima la stringa non riusciva a prendre il valore, forse un errore di sintassi nel mio codice...

Comunque, l'importante è aver risolto. Ringrazio Marino51 e tutti coloro che sono intervenuti in questo threat.
Enzo
 
Discussioni simili
Autore Titolo Forum Risposte Data
M [PHP] Istruzione "echo" all'interno di codice html PHP 2
S [PHP] Problema con istruzione "use" PHP 23
giancadeejay [PHP] istruzione UPDATE SQL PHP 2
CristianB72 [RISOLTO] [PHP] Istruzione "if" non funziona PHP 6
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 14
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7
S Libreria PHP per creare file dwg o dxf PHP 0
A [cerco - retribuito] Sviluppatore Php freelance per progetti vari Offerte e Richieste di Lavoro e/o Collaborazione 2
L Google chart php mysql PHP 2
R Download file multipli da directory php PHP 0
F pagina dinamica PHP PHP 3
P Rimozione automatica url da sitemap.xml con PHP PHP 1
L php tinymce mi duplica la classe label PHP 3
S Errore PHP - Notice: Undefined index ... PHP 14
N file manager da php 5 a 7 PHP 15
M Utilizzare la funzione mysql_num_rows() in PHP 5 PHP 3
elpirata Update dinamico informazioni scritte in una pagina php jQuery 11
N Mysql_result per PHP 7 PHP 2
Emix Select concatenate php sql ajax PHP 2
P Modifica con PHP di un node in una sitemap xml PHP 0
D Come usare funzione php PHP 6
P Cancellazione specifici files in una folder php PHP 1
R Tradurre stringhe con php e google translator PHP 4
I Salvataggio snapshot IPCAM tramite PHP PHP 5
felino PHP e script generazione file excel PHP 2
L Aiuto per programma web php/mySQL PHP 2
A Estrapolare parti di testo con PHP PHP 2
A Aiuto php colore diverso PHP 10
E Errore di lettura php in html PHP 8
J php, scegliere autista da select e mostrare se ha fatto un incidente PHP 8
P Passaggio id php a javascript PHP 6
MarcoGrazia [PHP] [regex] Validare un url PHP 2
W Rinominare un file in PHP PHP 7
L Upload di un'immagine all'interno di un database usando php PHP 6
J creare pagina php di prenotazione PHP 5
MarcoGrazia Visual Studio Light, configurazione PHP PHP 5

Discussioni simili