Newsgroup: it.comp.os.linux.development
Titolo: problema con php

PROGRAMMARE IN PHP
Ho impostato un semplice form i cui dati vengono spediti ad un semplice
file .php che deve elaborare 4 variabili passate.
Purtroppo sembra che questa varibili non arrivino allo script...
vi posto il codice subito sotto
FILE HTML:
<html>
<head><title>Scrittura di informazioni da un form ad un file</title></head>
<body>
<center>
<h2>Indica tre fra i tuoi amici con i quali possiamo prendere contatto</h2>
<form method="get" action="form.php">
<br>Inserisci il nome del cliente <input type="text" name="cliente"><br>
<br>Inserisci il nome del primo amico <input type="text" name="nome1"><br>
<br>Inserisci il nome del secondo amico <input type="text" name="nome2"><br>
<br>Inserisci il nome del terzo amico <input type="text" name="nome3"><br>
<input type="submit" value="invia le informazioni!">
<input type="reset" value="cancella!">
</form>
</body>
</html>
FILE PHP:
<?php
if ( !$cliente ) {
header ("Location: 
http://camera/form.html
");
exit;
}
echo "<html><body>";
if (!$p_file = fopen("form.txt","a+")) {
echo "Spiacente, non riesco ad aprire il file scrittura_da_file_a_form.txt<br>";
echo "<a href=\"form.html\">Torna al form</a>";
}
if ((!$nome1) || (!$nome2) || (!$nome3)) {
echo "Spiacente, ma devi compilare tutti i campi<br>";
echo "<b>Cerca di essere meno pigro!</b><br>";
echo "<a href=\"form.html\">Torna al form</a>";
} else {
echo "Sto elaborando i nomi<br>";
fputs($p_file, "\n");
fputs($p_file,"Nome cliente: $cliente\n");
fputs($p_file,"Amico # 1: $nome1\n");
fputs($p_file,"Amico # 2: $nome2\n");
fputs($p_file,"Amico # 3: $nome3\n");
fclose($p_file);
echo "Ecco il contenuto del file...<br><br>";
echo "<pre>";
passthru ("cat /var/www/html/form.txt");
echo "</pre>";
echo "Ritorna al <a href=\"form.html\">form</a>";
}
?>
</body>
</html>
Sapreste dirmi dove sbaglio?
grazie
bull

E' proprio così, non passa le variabili.
Ad esempio ho fatto una semplice prova:
FILE test.html
<HTML>
<HEAD>
</HEAD>
<BODY>
<FORM method="get" action="test.php">
<INPUT TYPE="TEXT" NAME="nome">
<input type="submit" name="invia dati">
<input type= "reset">
</FORM>
</BODY>
</HTML>
FILE test.php
<?PHP
echo "Ok $nome";
?>
Da soltanto OK senza il nome. 
Sono disperatooo, cosa diavolo sta accadendo?
bull

 E' proprio cosě, non passa le variabili.

Se ti fa piacere, ho copiato paro paro il tuo codice e a me funziona
correttamente.
Il codice e' corretto!
Web server / interprete php installato tutto correttamente?
Questo file ti funziona?
----php_info.php-------
<?php
phpinfo();
?>
-------------------------
Ciao,
Ema

 Il codice e' corretto!
Da una parte mi fa piacere dall'altra cado nella disperazione più
totale...
E' possibile che qualcosa non funzioni a livello di configurazione
Apache,php?
Il fatto è che ho cominciato a programmare php su Linux da poco tempo ed
in effetti non avevo passato ancora una variabile prima d'ora(sotto
windows si naturalmente).
Da cosa può dipendere?
E' molto strano a mio avviso, perchè non si può dire che Apache o mod.php
non funzionino dato il risultato, ma perchè non mi prende le variabili?
ciao
bull

 Purtroppo sembra che questa varibili non arrivino allo script...
In php.ini:
register_globals = On;
Oppure - e più saggiamente - accedi alle variabili tramite 
$_GET["nome_variabile"].
Ciao
  David
-- 
<d.santinoli presso mi. flashnet. it>

 Sono disperatooo, cosa diavolo sta accadendo?
Hai provato con 
<?=$HTTP_GET_VARS["nome"]?>

 non funzionino dato il risultato, ma perchè non mi prende le variabili?
hai i php recenti ??? le register globals come sono configurate ??? se sono
disabilitate per leggere dal get devi scrivere:
$tua_var = $_GET['nomevar'];
spero che questo ti faccia suonare un campanello e vai a leggerti un po'
tutto il manuale di configurazione del php per conoscere programmazione
sicura e nuove implementazioni, le register global sono dichiarate obsolete
dalla versione 4 e sconsigliate per problemi di sicurezza sui nomi di
variabili e della loro visibilita'.
ciao


Probabilmente il mio libro è tanto obsoleto quanto le register global, però
non comprendo bene:
vuoi dire che se ad esempio voglio visualizzare un valore dentro una
variabile devo rispettare la seguente forma:
$nome = "bull";
echo "$_GET('$nome')";
per visualizzare ad esempio "Alessandro"?
Thx!
bull


No, per variabili locali usi la forma consueta $nome.
Quella che ti e' stata suggerita e' per i parametri passati in get da un
form.
Comunque, a parte tutto, credo che siamo OT.
Ciao,
Ema

 ha scritto nel messaggio
news:_T9Ta.194553$lK4.5...@twister1.libero.it...
no fai cosi ...
 echo "$_GET['bull']";
ricordati le [] _GET non e' una funzione ma e' un array super globale ...
ah per questa definizione di array superglobale ricordati che ora con i php
nuovi puoi usare gli array get post ecc ... all'interno di funzioni senza
doverli chiamare globali perche' lo sono gia' di loro.
ciao


Per me nessun problema, tant'e' che ho cercato di risponderti.
La mia osservazione e' appunto motivata dal fatto che i problemi che hai
presentato non hanno mai fatto riferimento a linux.
Non basta il fatto che probabilmente stai programmando in linux.
In effetti il codice php di cui si e' trattato puo' girare benissimo anche
sotto Windows.
In tal caso, un newsgroup interamente dedicato a php era forse piu'
appropriato.
Chenneso', se tu avessi detto:
 (esempio stupido)
voglio fare una
system("ls -l")
ma non mi funziona
oppure
(esempio piu' serio)
ho problemi con la funzione "fork()" o per l'accesso alla "shared memory"
allora sarebbe stato un problema legato a linux.
Io la vedo cosi'.
Ciao,
Ema


Spero di aver capito.
grazie
ciao bull

 <?=$HTTP_GET_VARS["nome"]?>
Potrebbe funzionare, infatti ho provato ma mi da il nulla, cosa che mi
accadeva anche con le variabili globali prima che le impostassi su "on" nel
file php.ini.
Hai qualche suggerimento al riguardo?
Comunque non capisco perchè php debba dare questi problemi...Sarà che sto
studiando su un vecchio libro ma pensavo che le variabili si passassero
senza problemi:
es: <INPUT TYPE...NAME="url">...<?php echo $url ?>
Se non sbaglio $HTTP_GET_VARS è un array associativo, dunque devo dedurre che
tutte le variabili passate dal form stiano dentro $HTTP_GET_VARS? 
Ok, se è così me ne farò una ragione, anche se php mi sembra che
complichi le cose anzichè semplificarle, ma adesso mi domando sempre più:
come configurare php.ini affinchè questo array funzioni a dovere?
grazie
bull

 come configurare php.ini affinchè questo array funzioni a dovere?
apri il php ini lo leggi e capisci molto su come configurarlo ... quello che
non capisci vai online sul sito del php e leggi la documentazione per la
configurazione e risolvi tutti i problemi ... e dai mi pare che aspetti solo
la pappa pronta ...
cmq il fatto che le versioni recenti tengano l'automatica registrazione
delle variabili globali su off e' solo per motivi di sicurezza nel codice, i
vecchi script con le var globali vanno rivisti per possibili buchi di
sicurezza !!!
ciao

Il problema è che è sparita la versione apache_1.3.27-win32-x86-no_src.msi
...
 Dove l'avranno messa?

>  Dove l'avranno messa?
Come non detto 
http://www.apache.org/dist/httpd/binaries/win32/old/

  Dove l'avranno messa?
soprattutto per windows ti consiglio la versione 2 che era stata fatta
appunto per poter avere il porting su windows, ed e' anche quella piu'
recente come release
ciao

 recente come release
Su windows avevo un altro problema, ossia non riuscivo ad inviare le mail
perchè mi dava dei problemi con SMTP. Smontata la 1.3.28 ho installato la
1.3.27(seguita la guida su 
html.it
) che ha fatto faville, nel senso che ha
risolto questo non piccolo inconveniente. Dunque un buggino, credo, sulla
1.3.28.
Su Linux seguirò il tuo consiglio, toglierò tutto ciò che ho installato dai
pacchetti pro server e reinstallo il tutto, così vediamo un po' se riesco a
risolvere l'altro problema sul passaggio delle variabili da form tramite
metodo post.
Comunque clamorosa la scoperta che ho fatto, ossia che la 1.3.28 di Apache,
che peraltro davano per stabile, abbia questi problemi con Windows(forse è
stabile con Linux).
Per quanto riguarda la ver.2 non saprei, probabilmente quando mi stavi
rispondendo ero già in formattazione del disco, dato che avevo disinstallato
la versione problematica di apache, ma non riusciva più a installarmi una
nuova versione in quanto incorreva in un errore...(non sai gli accidenti!).
ciao
bull

 nuova versione in quanto incorreva in un errore...(non sai gli
accidenti!).
errori di install rpm sotto linux ??? se sai quello che fai con un install
forzato si installano cmq ... molto prob ha difficolta' a risolvere delle
dipendenze che se cmq sai rimosse o installate non hai nessun problema a
forzare ...
per win se invece di continuare a tentare la versione 1 che e' quella che ha
piu' problemi su win decidessi di mettere la 2 vedrai che ti troverai anche
meglio.
ah dalla 1 alla 2 hanno cambiato la forma del config file ed alcune voci
interne di esso, diciamo che e' diventato un po' piu' umano e capibile.
ciao