Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31

Discussione: limitazioni is_file?

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    161

    limitazioni is_file?

    Ciao.
    Scusate, ho una domanda... ho provato a cercare ma non ho trovato niente in merito.

    is_file ha delle limitazioni? nel caso specifico: può essere chiamato all'interno di funzioni?

    a me viene da pensare che è una domanda stupida, ma non saprei cos'altro pensare.


    Codice PHP:
    if (is_file($CONF[url_base].'variabili/'.$_SESSION[fw_userid].'.txt')) {...} 
    fa quello che deve fare nella pagina x, io ho bisogno del controllo anche dentro una funzione e lì mi salta all'istruzione else anche se il file c'è

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    quell'istruzione è corretta
    hai provato a fare un
    echo $CONF[url_base].'variabili/'.$_SESSION[fw_userid].'.txt';

    ??

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    161
    certo che ho provato ed è corretta.
    Per essere sicura al 100% e non accorgermi per caso di un errore minimo (che succede dopo ore e ore a sclerare davanti al computer) ho fatto anche copia-incolla nell'altra pagina e là il controllo funziona

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    non è che fai un include qualcosa di simile? prova a postare tutto il codice, cmq dal manuale ho trovato questo

    I tend to use alot of includes, and I found that the is_file is based on the script executed, not ran.
    if you request /foo.php and foo.php looks like this:
    <?php
    include('foobar/bar.php');
    ?>
    and bar.php looks like this:
    <?php
    echo (is_file('foo/bar.txt'));
    ?>

    Then PHP (on win32, php 5.x) would look for /foo/bar.txt and not /foobar/foo/bar.txt.
    you would have to rewrite the is_file statement for that, or change working directory.
    Noting this since I sat with the problem for some time

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    161
    scusa... è logico che cerchi /foo/bar.txt e non /foobar/foo/bar.txt... almeno a me pare logico...
    Di include ne ho parecchi, ma non nel file che contiene la funzione nel quale ho bisogno di inserire il controllo.

    Mentre rispondevo mi sono venute delle curiosità ed ho rilevato altri funzionamenti anomali, quindi adesso posto anche quelli:

    La struttura del sito è complessa in quanto si tratta di un gestionale on-line, spero si riesca a capire qualcosa lo stesso.

    Una della pagine dove il controllo funziona è questa, che si trova nella directory $CONF[url_base], ma se inserisco l'URL relativo e non quello assoluto non funziona
    Codice PHP:
    <?

    if (!is_file("config/config.php")) {
        
    header("Location: installation/");
        die();
    }

    if(isset(
    $_GET[post_login])) {
        
    $post_login="?post_login=".$_GET[post_login].'&from_login=1';
    } else 
    $post_login="?from_login=1";
    session_start();

    if(
    $_GET[logout]==1) {
        if (
    is_file($CONF[url_base].'modules/calendar/variabili/'.$_SESSION[fw_userid].'.txt')) {
            
    unlink($CONF[url_base].'modules/calendar/variabili/'.$_SESSION[fw_userid].'.txt');
        }
        
    session_destroy();
    }

    include(
    "config/config.php");
    include(
    "config/config_plus.php");

    .........................................

    ?>
    Qui l'include sono dopo, ma il controllo funziona anche in quest'altra pagina, dove l'URL inserito è quello relativo - quello assoluto non funziona.
    Codice PHP:
    <? 
    include("../../../framework/framework.php");
    include(
    "../../../modules/calendar/objects.php");
    include(
    "../functions.php");
    include(
    "../config.php");
    $module="calendar";

    $percorso='../variabili/';
    $utente=$_SESSION[fw_userid];
    if (!
    is_file($percorso.$utente.'.txt')) {
        
    file_put_contents($percorso.$utente.'.txt',-1);
    }
    else {
        
    $var intval(file_get_contents($percorso.$utente.'.txt'));
        
    file_put_contents($percorso.$utente.'.txt',--$var);
    }

    ...........

    ?>
    qua invece non funziona con nessun tipo di URL (il file ocntiene solo delle funzioni php)
    Codice PHP:
    <?

    function calendar_element_1() {

        GLOBAL 
    $CONF;
        
        if (!
    is_file('/variabili/'.$_SESSION[fw_userid].'.txt')) {
            
    $var0;
    }
    else {
        
    $var intval(file_get_contents('/variabili/'.$_SESSION[fw_userid].'.txt'));
    }

    ...

    ?>

  6. #6
    La funzione is_file() non ha nessuna limitazione rispetto allo scope in cui viene chiamata, se ottieni effetti diversi da quelli attesi e' perche' passi un percorso sbagliato.

    Nell'ultimo pezzo di codice, ad esempio, usi il percorso assoluto '/variabili/', mi sembra improbabile che un server abbia quella directory nella root.

  7. #7
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    esatto prova a mettere un punto per dire che parti dalla directory del file php

    Codice PHP:
    <? 

    function calendar_element_1() { 

        GLOBAL 
    $CONF
         
        if (!
    is_file('./variabili/'.$_SESSION[fw_userid].'.txt')) { 
            
    $var0

    else { 
        
    $var intval(file_get_contents('./variabili/'.$_SESSION[fw_userid].'.txt')); 


    ... 

    ?>
    oppure in modo equivalente, togli la barra della root

    Codice PHP:
    <? 

    function calendar_element_1() { 

        GLOBAL 
    $CONF
         
        if (!
    is_file('variabili/'.$_SESSION[fw_userid].'.txt')) { 
            
    $var0

    else { 
        
    $var intval(file_get_contents('variabili/'.$_SESSION[fw_userid].'.txt')); 


    ... 

    ?>

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    161
    senza barra non va, adesso provo con il punto

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    161
    Non funziona.
    Come avevo detto all'inizio non va neanche se passo l'indirizzo assoluto
    $CONF[url_base].'modules/calendar/variabili/'.$_SESSION[fw_userid].'.txt'

  10. #10
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    che permessi ha la cartella variabili?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.