Include_Once e Require_Once

Ho sulla LAMP una versione di php 4.4.0 ma non supporta questa sintassi:

require('includephp/header_page.php')
or die("Impossibilire caricare il file, verificare il PATH") ;

e devo utilizzare questa:

include_once 'includephp/header_page.php'; 
include_once 'includephp/footer_page.php';

come posso ovviare ha questo problema senza cabiare versione di php sulla pen-drive? :bye:

inviato 8 anni fa
EKELON77
X 0 X

Qual'è il problema in fondo?

Ad ogni buon conto exit (die è un alias di questa funzione) non risponde se la funzione precedente da un intero come risposta e require, così come include in risposta danno proprio un intero, ricorda inoltre che nno sono funzioni ma costrutti del linguaggio.

Il tuo esempio poterebbe funzionare in questo modo:

vars.php

<?php
funzioni e altro proprie del file da includere.....

alla fine del file inserire un bel
return 'OK';
?>

file chiamante:

<?php
if ((require 'vars.php') != 'OK') {
    echo "il file vars.php non esiste, lo script termina qui!";
    die();
}
?>

ovvio che oltre a include si può usare require.

Altra cosa considerare i valori di ritorno di queste funzioni (be la parola funzione è qui usata a sproposito visto che sia require che include sono costrutti del linguaggio PHP e non già funzioni esterne, ma che vuoi farci ci sono abituato oramai), quindi dicevo, puoi provare a usare i codici di ritorno di questi costrutti (l'ho detto evvai!) che so esistere però non ho trovata una documentazione in merito.

Ultima cosa è la creazione di un semplice test di esistenza del file da includere:

if (is_file('pippo.php')) require 'pippo.php'; die ("il file pippo.php non esiste, lo script termina qui!");

se pippo.php è un file lo è perché esiste e dato che il tutto è legato ad un test (la if) puoi usare il die.

risposto 8 anni fa
Marco Grazia
modificato 8 anni fa
X 0 X

 O0 Marcolino mi hai dato un idea, ma io intedevo nella sinatassi dei costruttori ovvero per php 4.4.0 sei costretto a utlizzare quella sintassi:

include_once 'includephp/header_page.php'; 
include_once 'includephp/footer_page.php';

, me lo confermi, altrimenti:

require('includephp/header_page.php')
or die("Impossibilire caricare il file, verificare il PATH") ;

.  :bye:

risposto 8 anni fa
EKELON77
X 0 X

Cosa dovrei confermarti, la sintassi è sia una che l'altra, ovvero come sai include e include_once che require con require_once hanno significati diversi, quindi devi usare uno o l'altro in funzione di cosa devi fare, per quanto il die ti consiglio di fare come ti ho detto che poi sono esempi presi dal manuale online, qundi fonte ufficiale. Ma usa il PHP 5 no?

risposto 8 anni fa
Marco Grazia
X 0 X

OKCosa dovrei confermarti, la sintassi è sia una che l'altra, ovvero come sai include e include_once che require con require_once hanno significati diversi, quindi devi usare uno o l'altro in funzione di cosa devi fare, per quanto il die ti consiglio di fare come ti ho detto che poi sono esempi presi dal manuale online, qundi fonte ufficiale. Ma usa il PHP 5 no? ke significa sul mio notebbok lo utilizzo.

risposto 8 anni fa
EKELON77
X 0 X
OK
Cosa dovrei confermarti, la sintassi è sia una che l'altra, ovvero come sai include e include_once che require con require_once hanno significati diversi, quindi devi usare uno o l'altro in funzione di cosa devi fare, per quanto il die ti consiglio di fare come ti ho detto che poi sono esempi presi dal manuale online, qundi fonte ufficiale. Ma usa il PHP 5 no?
ke significa sul mio notebbok lo utilizzo.

Avevi detto che usavi il PHP4.4.0  :dunno:

risposto 8 anni fa
Marco Grazia
X 0 X

utilizzo php 4.4.0 per la pen drive dove lancio dei demoni per apache e mysql O0, cmq. sto utilizzando il tuo script di include.  ;)

risposto 8 anni fa
EKELON77
X 0 X

Ok, dimmi se va così potrei usarlo anche io :)

risposto 8 anni fa
Marco Grazia
X 0 X

Ti passo il codice ma mi spieghi il fatto del return meglio.

<?
#Questo file ha lo scopo di contenere tutte le chiamate agli include , verifcando se esiste e caricarlo.

if (is_file((include_once 'includephp/include_header_page.php') != 'OK')) {
    echo "Impossibilire includere/richiamare il file, verificare il PATH";
    die();
}
if (is_file((include_once 'includephp/include_footer_page.php') != 'OK')) {
    echo "Impossibilire includere/richiamare il file, verificare il PATH";
    die();
}
return 'OK';
?>

  O0 :bye:

risposto 8 anni fa
EKELON77
X 0 X

return non è nel file che chiama (require) ma nel file richiamato, in pratica quando con require chiami che so pippo.php, require passa anche ciò c'è nel return, in questo caso OK, ma puoi scriverci anche true o false ovviamente.

Quindi passi il valore ritornato nel test (if) che se validato passa, se no .... il file può non esistere o essere stato corrotto.

Dico che nessuno di questi metodi è perfetto, io preferisco usare un altro metodo che però verifica più che altro se lo script da includere sia di chi lo chiama (owner) piuttosto che di qualcun altro, questo più che altro per evitare l'inclusione di script da terzi, cosa rara lo so, ma io divento più paranoico di un russo alle volte  :)

risposto 8 anni fa
Marco Grazia
X 0 X

return non è nel file che chiama (require) ma nel file richiamato, in pratica quando con require chiami che so pippo.php, require passa anche ciò c'è nel return, in questo caso OK, ma puoi scriverci anche true o false ovviamente.

Quindi passi il valore ritornato nel test (if) che se validato passa, se no .... il file può non esistere o essere stato corrotto.

Dico che nessuno di questi metodi è perfetto, io preferisco usare un altro metodo che però verifica più che altro se lo script da includere sia di chi lo chiama (owner) piuttosto che di qualcun altro, questo più che altro per evitare l'inclusione di script da terzi, cosa rara lo so, ma io divento più paranoico di un russo alle volte  :)

quindi facendo il punto tu ti controlli se l'utente che esegue lo script è PHP dai go altrimenti ciccia :-D, per quanto riguarda la return dove è che sbaglio, non lo devo mettere nell'include ma nel file index?  8)

risposto 8 anni fa
EKELON77
X 0 X
No, no, proprio nel file incluso.
esempio:
include_header_page.php
function ApriFile() {}
function SalvaFile() {}
return true

file index.php

if (include_once 'includephp/include_header_page.php' != true) {
    echo "Impossibilire includere/richiamare il file, verificare il PATH";
    die();
}
eccetera

qui ho voluto usare una variabile booleana, ma insomma alla fine non cambia nulla.

Attento alla forma però, ho specificato che la variabile può essere solo true o diversa da esso, sembra una sottigliezza e lo è, infatti se il file include_header_page.php manca di quella variabile, non sai se ritornerò un valore false o comunque arbitrario.

A pensarci bene forse era meglio usare un 'OK' che difficilmente potrebbe tornare per caso, come potrebbe capitare con un true che dopotutto è pur sempre un singolo valore intero, dando un falso positivo.

risposto 8 anni fa
Marco Grazia
X 0 X

index.php

<?
#Mi controllo se il file esiste e poi lo carico,  questo file  include gli atri include devono essere richiamati quando servono e come" 
if (is_file((include_once 'includephp/include_base.php') != 'OK')) {
    echo "Impossibilire includere/richiamare il file, verificare il PATH";
    die();
}
?>

include_base.php

<?
#Questo file ha lo scopo di contenere tutte le chiamate agli include , verifcando se esiste e caricarlo.
if (is_file((include_once 'includephp/include_headerpage.php') != 'IB')) {
    echo "Impossibilire includere/richiamare il file, verificare il PATH";
    die();
}
if (is_file((include_once 'includephp/include_footerpage.php') != 'IB')) {
    echo "Impossibilire includere/richiamare il file, verificare il PATH";
    die();
}
return 'IB';
?>
risposto 8 anni fa
EKELON77
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda