[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.449
338
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
3.203
207
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.343
91
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
3.203
207
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
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0

Discussioni simili