Visualizzazione risultati 1 fino 5 di 5

Discussione: Problema comportamento condizione IF

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito Problema comportamento condizione IF

    Buonasera,
    sono tre giorni che ci perdo tempo ma non sono riuscito ancora a capire perchè questa condizione funziona male:

    Codice PHP:
    if($a[9]){ if($conta > 0){ echo file_get_contents("protetto.flv"); }else{ echo file_get_contents("permessi_insufficienti.flv"); }}else{ echo file_get_contents("non_protetto.flv"); }
    $conta è sicuramente positivo e maggiore di zero, quindi, come si può ben capire, dovrei visualizzare il file "protetto.flv" mentre vedo sempre il file "permessi_insufficienti.flv".

    Se invece elimino l'header che dichiara il file flv (Header("Content-type: video/x-flv");) e modifico PHP in questo modo:

    Codice PHP:
    if($a[9]){ if($conta > 0){ echo "SI"; echo file_get_contents("protetto.flv"); }else{ echo file_get_contents("permessi_insufficienti.flv"); }}else{ echo file_get_contents("non_protetto.flv"); }
    Visualizzo "SI" ed il contenuto di "protetto.flv". Ho pensato fosse un errore di cache così all'inizio del codice ho aggiunto:

    Codice PHP:
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Data passata
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // sempre modificato
    header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache"); // HTTP/1.0
    Purtroppo il risultato non cambia...come mai!?
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Premetto che invece di usare echo file_get_contents ti conviene readfile().

    Ci sono tre possibilità che mi vengono in mente, alcune possono essere assurde, si, ma vanno controllate comunque:
    • $conta non è maggiore di zero —magari non è inizializzato in un ramo di esecuzione?
    • i file non hanno il contenuto che ti aspetti —hai rinominato male qualcosa?
    • la cache ti frega comunque —hai provato aggiungendo un parametro sempre diverso alla richesta, tipo ?ts=<timestamp> ?

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Continua a non funzionare. Anzi...ora qualsiasi operazione faccia mi da sempre "permessi_insufficienti.flv".

    Procedo con il codice completo:

    Codice PHP:
    <?php

    $id
    = $_GET['id'];

    if(!
    is_numeric($id)){
    Header("HTTP/1.0 404 Not Found");
    }

    $q = mysql_query("SELECT * FROM play WHERE id = '{$id}'");

    if(
    mysql_num_rows($q) == 1){
    ///////////////////////////////////////////////////////////////////////////////
    $a = mysql_fetch_row($q);

    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Data passata
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // sempre modificato
    header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache"); // HTTP/1.0

    $gids = $_SESSION['group_ids'];
    if(
    $gids == "0"){
    $array_perms = array(1,2,3);
    }else{
    $videos = explode(" ",$a[9]);
    $users = explode(" ",$gids);
    $array_perms = array_intersect($va,$ua);
    }

    $conta = count($array_perms);

    if(
    $a[9]){ if($conta > 0){ readfile("protetto.flv"); }else{ readfile("permessi_insufficienti.flv"); }}else{ readfile("non_protetto.flv"); }

    Header("Content-type: video/x-flv");

    ///////////////////////////////////////////////////////////////////////////////
    }else{
    Header("HTTP/1.0 404 Not Found");
    }

    ?>
    Ultima modifica di miki92 : 28-06-2012 alle ore 22.57.46
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Commenta tutto il codice, a parte readfile("protetto.flv"); e le righe per l'header, e guarda che accade.

    La connessione al db non c'è però —l'hai solo tolta per postare qua immagino.

    Questa riga va messa prima dell'output con readfile
    Codice PHP:
    Header("Content-type: video/x-flv");
    Quand'è che impariamo ad indentare?


    edit: mi sono re-indentato il codice, l'ho letto con attenzione e ... qua c'è qualcosa che non va:
    Codice PHP:
    if ($gids == "0") {
    $array_perms = array(1, 2, 3);
    } else {
    $videos = explode(" ", $a[9]);
    $users = explode(" ", $gids);
    $array_perms = array_intersect($va, $ua);
    }

    $conta = count($array_perms);
    $va ed $ua non sono definite, quindi $array_perms non contiene quello che ti aspetti, quindi $conta non è > 0. Vedi il primo dei miei punti sopra
    Ultima modifica di dreadnaut : 28-06-2012 alle ore 23.19.59

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Ho risolto. Dopo giorni di test ho capito che ciò che non andava era il plugin per chrome di VLC.

    In pratica tale plugin che permette di riprodurre il file "flv" direttamente dal browser ha una cache personale che non si svuotava con la cache del browser e quindi vedevo sempre lo stesso filmato con o senza header flv.

    Testando il mio codice iniziale direttamente dal file flash player non ho avuto problemi.

    P.S. $va ed $ua erano vecchie variabili poi sostituite da $users e $videos. La connessione al database effettivamente c'era ma non l'ho inclusa insieme ad un file "config.inc.php".
    Apprezzi l'aiuto? Offrimi un caffè!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •