Pagina 1 di 1

downgrade a php 4

Inviato: mer 3 ott 2007, 20:23
da tojo72
volevo chiedere un consiglio...
siccome le stragrande maggioranza dei webserver utilizza ancora php 4, fare dei test in locale con php 5 di slack 12 non sempre e' utile.
per cui vorrei tornare alla versione 4 di slack 11

cosa e' meglio fare?

1) rimuovere php 5 e installare il pkg di php 4
2) rimuovere php 4, apache, mysql di slack 12 e installare quelli di slack 11
3) rimuovere php 5 e compilare php4
4) ditemi voi ;)

volevo inoltre sapere se e' possibile avere contemporaneamente php 4 e 5 (se si in che modo e come devo agire con apache)

Inviato: mer 3 ott 2007, 20:32
da aschenaz
Ma secondo me non è strettamente necessario downgradare. Basta non usare funzioni specifiche del php5, no?

In ogni caso, se hai a disposizione una seconda macchina, faresti meglio a testare con entrambi...

Inviato: mer 3 ott 2007, 20:46
da tojo72
uno script semplice semplice come questo con php 5 non va

html:

Codice: Seleziona tutto

<HTML>
<HEAD>
<TITLE>Semplice modulo di feedback</TITLE>
</HEAD>
<BODY>

<FORM METHOD="post" ACTION="invia_semplicemodulo.php">


<P><strong>Il tuo nome:</strong><br>
<INPUT type="text" NAME="nome_mittente" SIZE=30></P>

<P><strong>Il tuo indirizzo e-mail:</strong><br>
<INPUT type="text" NAME="email_mittente" SIZE=30></P>

<P><strong>Messaggio:</strong><br>
<TEXTAREA NAME="messaggio" COLS=30 ROWS=5 WRAP=virtual></TEXTAREA></P>

<P><INPUT TYPE="submit" NAME="invio" VALUE="Invia il modulo!"></P>

</FORM>

</BODY>
</HTML>
php a cui punta la pagina precedente:

Codice: Seleziona tutto

<?

if (($nome_mittente == "") || ($email_mittente == "") || ($messaggio == "")) {
        header("Location: http://localhost/semplice_modulo.html");
        exit;
}


$messaggio = "E-MAIL INVIATA DAL SITO WEB\n";
$messaggio .= "Nome del mittente:  $nome_mittente\n";
$messaggio .= "Indirizzo e-mail del mittente:    $email_mittente\n";
$messaggio .= "Messaggio:          $messaggio\n\n";

$destinatario = "tu@iltuoemail.it";
$oggetto = "Modulo di feedback completo del sito web";
$intestazionimail = "From: Il mio sito web<> \n";
$intestazionimail .= "Reply-To: $email_mittente\n\n";

mail($destinatario, $oggetto, $messaggio, $intestazionimail);

?>

<HTML>
<HEAD>
<TITLE>Il feedback è stato inviato</TITLE>
</HEAD>
<BODY>

<H1>L'e-mail seguente è stata inviata con successo:</H1>

<P><strong>Il tuo nome:</strong><br>
<? echo "$nome_mittente"; ?>

<P><strong>Il tuo indirizzo e-mail:</strong><br>
<? echo "$email_mittente"; ?>

<P><strong>Messaggio:</strong><br>
<? echo "$messaggio"; ?>

</BODY>
</HTML>
:roll: piu' semplice di cosi... si muore... MA NON VA
in pratica "post" non passa le stringhe al file in "action"

su slack 11 questo script funzionava

Inviato: mer 3 ott 2007, 21:24
da aschenaz
In questo caso non si tratta di php4 o php5: è una questione di register_globals.
Per motivi di sicurezza, da una certa versione in poi del php4, il register_globals (che trovi in php.ini) è settato di default a 'off' e questo comporta che le variabili che passi con un form non diventano automaticamente globali e non le puoi semplicemente richiamare col nome della variabile.

Per richiamare le variabili passate da un form, devi usare $_POST["nome_variablie"] (con il metodo 'post') e $_GET["nome_variabile"] (con 'get' o con le variabili comunque passate con una query-string); oppure puoi usare $_REQUEST["nome_variabile"] che vale per entrambi i metodi.

Settare a 'on' il register_globals è assolutamente sconsigliabile: un sito, in quelle condizioni, diventa un vero colabrodo. IMHO è anche opportuno non abusare di $_REQUEST: usare $_POST o $_GET, in base alle esigenze, ti limita il campo di eventuali attacchi...

Ciao,
nino

Inviato: mer 3 ott 2007, 21:27
da tojo72
questa si che e' una risposta!!!

adesso devo uscire, ma domani ci do un occhiata meglio!

grazie 8)

Inviato: gio 4 ott 2007, 17:57
da tojo72
nino for president

la tua risposta e' stata davvero illuminante!
e' bastato settare register_globals = On per far funzionare vecchi script (e io che credevo che il problema stesse "solo" nella versione di php")
Settare a 'on' il register_globals è assolutamente sconsigliabile
ne ho bisogno solo per i test in locale, quindi il problema non si pone ;)

ciao & grazie

Inviato: gio 4 ott 2007, 20:32
da aschenaz
Anche se si tratta di semplici test, sarebbe comunque meglio abituarsi al register_globals disattivato. Poi, nel caso tu debba mettere tutto on-line, che fai, modifichi tutto il codice?
Considera che ormai tutti gli hosting hanno quel flag a 'off'...