includere file scelto casualmente da array

nim

Utente Attivo
11 Ott 2011
96
0
0
salve a tutti sono nuovo sia del linguaggio sia del forum :)
però volevo chiedere: come mai mi viene errore se cerco di includere un file scelto casualmente da un array?
mi spiegherò meglio con l'esempio :
PHP:
<?php
$elenco= array('indovinello1','indovinello2','indovinello3','indovinello4');
$indovinello=$elenco[rand(1,3)];
@include "echo '$indovinello';";
?>
mi potete aiutare a capire?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao e ben arrivato

PHP:
<?php
$elenco= array('indovinello1','indovinello2','indovinello3','indovinello4');
$indovinello=$elenco[rand(1,3)];
@include "echo '$indovinello';";
?>

l'include include un file es.
include "pinco.txt";
oppure
include "pallo.php";
mettiamo che per caso sia venuto il random 2, il tuo include diventa
@include "echo indovinello3";
se togli quella @ (detta silent perche nasconde gli errori) con molto probabilità otterrai
warning: ... in pratica file non trovato

p.s.
come l'hai scritta la funzione rand(1,3) va da 1 a 3, mentre tu hai l'array formato da
$elenco[0]=indovinello1
$elenco[1]=indovinello2
$elenco[2]=indovinello3
$elenco[3]=indovinello4
l'indovinello1 non salta mai fuori

visto che sei, come dici, alle prime armi non usare la @, cosi vedi gli errori che fai
 
Ultima modifica di un moderatore:

nim

Utente Attivo
11 Ott 2011
96
0
0
grazie, mi è stato molto d'aiuto...
non voglio che pensiate che voglio la pappa pronta e che non riesca ad arrangiarm da solo però vi devo dire che è subentrato un'altro problema...
quando viene incluso il file indovinello1.php contenente questo
PHP:
<?php  
if($_POST['opzioni'] == 1) header('Location: 3.php');
else if ($_POST['opzioni'] == 2) header('Location: sbagliata.php');
else $act='2.php';
?> 

<form method="post" action="<?=$act?>">

<input style="WIDTH: 106px; HEIGHT: 129px" value="1" name="opzioni" size="106" type="radio">
<input style="WIDTH: 106px; HEIGHT: 129px" value="2" name="opzioni" size="106" type="radio">
<input type="submit" value="conferma" name="confirm">

</form>
lo script non funziona...cioè solitamente se inserisco il codice sopra citato funziona tutto; mentre se lo includo e verifico l'if secondo la quale se verrebbe indirizzati a 3.php questa opzione non avviene,al contrario si verifica l'else...
ho cercato di esprimermi il meglio possibile: mi potete per l'ennesima volta aiutare?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
no non credo che tu voglia la pappa pronta, ma vedo che stai cercando di imparare, quindi ti dò la soluzione, evidenziando gli errori e qualche piccolo consiglio.
da quello che vedo tu fai un'unica pagina php chiamata 2.php (giusto? non sono due una php e una html col form?) come sarebbe giusto fare data la semplicità dello script.
quindi vuoi che l'action del form punti alla pagina stessa per fare che il form punti sempre alla pagina stessa anche se gli cambi nome è meglio usare la variabile globale
$_SERVER quindi l'else non ti serve e se cambi nome alla pag non devi andare a corregere il valore di $act che non ti serve più.
essendo agli inizi, anche se in certi casi non necessarie usa negli if le parentesi graffe, ti accorgerai in seguito come leggerai meglio quello che hai fatto.
metti un if di controllo del submit,
poi un errore dovuto all'inesperienza: l'istruzione header deve venire prima di qualsiasi output html (anche un semplicissimo spazio che non vedi)
quindi o la sostituisci con un meta o devi dire allo scrip di modificare il flusso con ob_start() ob_end_flush() posti uno all'inizio e uno alla fine
impara poi ad usare la funzione var_dump() MOLTO utile in fase di debag per capire cosa non funzia, ti restituisce il tipo di variabile e il suo valore
ultimo non usare gli shorttag <? sono deprecati usa sempre <?php
PHP:
<?php
ob_start();//all prima riga subito dopo il tag php prima di qualsiasi output html
if(isset($_POST['confirm'])){//è stato o no premuto il submit
	var_dump($_POST['opzioni']);//vedo il tipo e il valore del post, questo dopo il debag lo togli o lo commenti
	if($_POST['opzioni'] == 1){//a te vedere che l'if non è esattamente giusto anche se funzia
		header('Location: 3.php');
	}elseif ($_POST['opzioni'] == 2){ //elseif tutto attaccato
		header('Location: sbagliata.php');
	}
//else $act='2.php'; questa non ti serve più
}
?>  

<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"> 

<input style="WIDTH: 106px; HEIGHT: 129px" value="1" name="opzioni" size="106" type="radio"> 
<input style="WIDTH: 106px; HEIGHT: 129px" value="2" name="opzioni" size="106" type="radio"> 
<input type="submit" value="conferma" name="confirm"> 

</form>
<?php
ob_end_flush();
?>
 

nim

Utente Attivo
11 Ott 2011
96
0
0
grazie mille,soprattutto per la disponibilità..
cercherò di capire bene il codice che mi ha scritto, ci sono molte cose che non so, e questo linguaggio mi piacerebbe impararlo bene .
grazie
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Visto che stai imparando, iniziamo a seguire dei coding standards decenti:
PHP:
<?php
// meglio controllare il REQUEST_METHOD
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // in questo caso è meglio usare il costrutto 'switch'

    switch ($_POST['opzioni']) {
        // 1 e 2 dovrebbero essere stringhe

        case '1':
            header('Location: 3.php');
            exit();

        case '2':
            header('Location: sbagliata.php');
            exit();

        default:
            // inserire sempre il caso 'default' per evitare problemi
            die('Nessuna opzione selezionata.');
    }
}

/*
 * invece di usare l'output control, che andrebbe evitato, costruiamo una
 * applicazione che mostri il form solo quando è necessario
 */

echo <<<EOF
<form method="post" action="{$_SERVER['REQUEST_URI']}">
    <input style="width: 106px; height: 129px" value="1" name="opzioni" size="106" type="radio">
    <input style="width: 106px; height: 129px" value="2" name="opzioni" size="106" type="radio">

    <input type="submit" value="Conferma">
</form>
EOF;

// è sconsigliato aggiungere il tag di chiusura alla fine del file
// si dovrebbe invece lasciare una linea vuota
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Visto che stai iniziando, comincia con il NON EFFETTUARE inclusioni dinamiche di file, sono il miglior modo per farti piallare il sito da qualche malintenzionato. Impara invece ad utilizzare un database e prendi da li i contenuti da visualizzare.
 

nim

Utente Attivo
11 Ott 2011
96
0
0
approposito di database...io conosco proprio l'essenziale del php ma vorrei usare anche il database..mi consigliate qualche guida dove partono a spiegare da zero ma proprio zero?
cioè dove le spiegazioni siano a prova di stupido, visto che non ho ancora installato niente e il database so a malapena cosa sia...
 
Discussioni simili
Autore Titolo Forum Risposte Data
I asp | includere un file, indirizzo depositato in un db Classic ASP 0
L includere file inc.*.php in automatico PHP 1
M [PHP] Includere file esterno PHP 0
localhost.nicola Includere file HTML/TXT su script php PHP 3
C Includere file Javascript 2
P Includere file php in altro file php, evitando l'html del primo... PHP 0
GoshMaledetto Includere File da altro server PHP 16
A creazione file js da includere in un documento html Javascript 6
V Usa la libreria "phpgraphlib.php" problemi nell'includere altri file PHP 2
B includere file xml in file php PHP 1
L includere file asp da altro server Classic ASP 2
R Includere elementi array fra apici PHP 1
felino [WordPress] [Woocommerce] Ritiro in zona: includere servizio aggiuntivo optional WordPress 0
F includere parte html in index.php PHP 5
M [PHP] Includere solo il risultato di una variabile PHP 2
S Includere in App Ibrida informazioni da Wikipedia jQuery 8
J Includere css nel Child-Theme WordPress 1
G Includere script altro sito PHP 2
M includere pagina con script in un'altra PHP 2
A includere form sito esterno nel proprio PHP 1
J Includere una variabile in una costante? PHP 1
L problema con get per includere pagine dal database PHP 4
D Includere quotazione metalli in real time sul proprio sito PHP 1
borgo italia Includere jQuery jQuery 1
M includere animazione flash in pagina html Flash 1
M includere pagina a seconda della scelta Javascript 1
S Includere una pagina con JavaSript Javascript 14
E fpdf salvare e aprire il file PHP 4
felino [Windows 10] Scompare icone, file e collegamenti sul desktop Windows e Software 0
S passare un valore da un form a un file .php con metodo post PHP 4
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
G file CSS contenente variabili HTML e CSS 1
M Creare traccia di download file sul server HTML e CSS 2
I elimina file PHP 1
I cerca file sottocartella unlink file PHP 0
I sessione username scarica file PHP 1
S Aggiornare percorso file collegati MS Access 0
I lista file sottocartella elimina file PHP 3
F comando di inclusione file audio in I-Pad non funziona HTML e CSS 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
I visualizza file sottocartella elimina singolo file PHP 1
I caricamento file in sottocartella nome utente PHP 3
I cartella sottocartella apri o scarica file pdf PHP 1
K Sfondo nuovo file Photoshop 0
C Wp-admin a file php WordPress 5
G Importazione file .sql Web Server 0
csi Inviare file jpg in locale alla stampante con php PHP 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
MarcoGrazia HTML5 <picture> e i file source HTML e CSS 2
MarcoGrazia criptare un file PHP 2

Discussioni simili