Visualizzazione dei risultati da 1 a 9 su 9

Discussione: php in webview android

  1. #1

    php in webview android

    Salve,
    ho la necessità che lo script php faccia alcune cose solo se si accorge che viene aperto mediante la webview di una app android specifica.
    Così ho scoperto che in questo modo potrebbe funzionare:
    codice:
    if ($_SERVER['HTTP_X_REQUESTED_WITH'] == "nome.mia.app"){
       esegui questo codice....
    }
    Sembra funzionare però mi sono accorto che le chiamate Ajax non le esegue.

    Questo lo dico perché poi ho provato con il seguente codice:

    codice:
    $nome_app = "nome.mia.app";
    if ($nome_app == "nome.mia.app"){
       esegui questo codice....
    }
    Con questo codice le chiamate Ajax funzionano; quindi ho il sospetto che sia $_SERVER['HTTP_X_REQUESTED_WITH'] a creare problemi al mio script.

    Conoscete un modo alternativo a $_SERVER['HTTP_X_REQUESTED_WITH'] per raggiungere il mio obiettivo ed ottenere tramite php il nome dell'app android?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Le chiamate ajax sono eseguite dal browser. Se non sono eseguite significa che le righe corrispondenti non sono generate o che ci sono errori nel html, etc... (ci sono tante cause possibili).
    Con il poco di codice che posti è difficile aiutarti.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Intanto se fai così
    Codice PHP:
    $nome_app "nome.mia.app";
    if (
    $nome_app == "nome.mia.app"){
       
    esegui questo codice....

    il codice dentro l'if sarà eseguito qualsiasi cosa succeda, perché imponi tu che la condizione sia vera, tanto vale togliere l'if.

    La variabile superglobale $_SERVER non è esattamente una variabile di PHP, si tratta di un array generato dal server web (leggere la documentazione) e non è garantito che tutti gli indici siano inizializzati, i più comuni lo saranno senz'altro, ma ce ne sono altri non standard che potrebbero non essere generati.
    HTTP_X_REQUESTED_WITH è uno di quegli indici che non è garantito che vengano generati.

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    @DUMAX.
    Non si capisce se le due parti di codice si sostituiscono o si aggiungono.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    la seconda parte di codice mi è servita solo per capire se $_SERVER potesse essere la causa del problema;
    ma è la prima parte di codice che mi serve perché mi legge il nome dell'app e se corrisponde mi produce del codice aggiuntivo nella webview dell'app android stessa.

    Purtroppo non saprei nemmeno come poter fare il debug nella webview...... c'è sicuramente qualcosa che mi sfugge.

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Ti sfugge il fatto che come ti ho detto, non tutti gli indici dell'array $_SERVER è certo che vengano inizializzati, quello che serve a te, usando AJAX non viene inizializzato.
    Devi trovare un altro modo per far capire allo script che arrivi da AJAX, per esempio aggiungi ai parametri che invii uno che funga da flag, se è 1 vuol dire che la richiesta è AJAX, se è 0 oppure non c'è allora la richiesta non è AJAX.
    In base a questo decidi cosa devi fare.

  7. #7
    Cia Alhazred,
    grazie dei suggerimenti.
    Per maggior sicurezza ho fatto un'altra prova:
    nel link della pagina riachiamata nella webview dell'app android, faccio inviare una variabile con metodo get: http://www.dominio.it/prova.html?aaa=1

    Quindi trasformo così la if nel php:
    codice:
    if ($_GET['aaa'] == 1){
       esegui questo codice....
    }
    Questa è la prova del nove. Funziona tutto correttamente, sia Ajax che tutto il resto.

    Tu mi dici che non tutti gli indici dell'array $_SERVER è certo che vengano inizializzati, così faccio scrivere il contenuto di $_SERVER['HTTP_X_REQUESTED_WITH'] in un file txt per vedere se viene valorizzata correttamente.
    Il risultato è che viene sempre valorizzata con il nome della mia app "nome.mia.app".
    A questo punto sono sicuro che $_SERVER mi fa "incavolare" le chiamate Ajax.

    Sarebbe il massimo se riuscissi a trovare un metodo alternativo in php per riuscire a leggere le stesse informazioni ossia il nome dell'app che stà caricando la pagina in quel momento.

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Quote Originariamente inviata da DUMAX Visualizza il messaggio
    A questo punto sono sicuro che $_SERVER mi fa "incavolare" le chiamate Ajax.
    Impossibile. $_SERVER è un array di dati. Se il confronto non funziona e che il dato in $_SERVER contiene il nome dell'app allora peova a vedere se non ci sono caratteri strani. Prova anche a fare un trim($_SERVER.....) per rimuovere gli eventuali spazi a destra e a sinistra.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    Certo, intendevo dire $_SERVER['HTTP_X_REQUESTED_WITH'].
    Non è un problema di trim perché il confronto funziona ed entra nel "then" o "else" nel modo corretto, grazie cmq del suggerimento.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.