|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Php/MySql DISPERAZIONEEE helpme
Ciao,
stò provando a seguire il tuorial presente su: http://freephp.html.it/guide/lezioni.asp?idguida=8 ma ho alcuni problemi con la pagina di inserimento....non mi funziona mi dà vari errori...il primo è che dopo aver compilato il form presente nel file insert.php mi dà un messagio di errore e mi dice che la variabile pass (che dovrebbe essere uno dei campi passati alla pagina save.php) non esiste Poi se commento la riga dove viene eseguito il controllo della pass mi viene dato il seguente errore: Parse error: parse error in c:\programmi\easyphp1-8\www\prova\save.php on line 12 I listati dei vari file sono questi...per favore aiutatemi ci stò impazzendo: config.inc.php: Codice:
<?php // Parametri del database $db_host = "localhost"; $db_user = "andrea"; $db_password = "1969"; $db_name = "prova1"; //Password per inserimento articoli $password="pass"; ?> Codice:
<? include ("config.inc.php"); include ("top_foot.inc.php"); //Stampa l'intestazione top(); ?> <form method=post action=save.php> Titolo:<br> <input type=text size=40 name=titolo><br> <br> Data:<br> <select name=giorno> <? for($i=1; $i<=31; $i++) echo "<option value=$i>$i>"; ?> </select> <select name=mese> <option value=1>Gennaio <option value=2>Febraio <option value=3>Marzo <option value=4>Aprile <option value=5>Maggio <option value=6>Giugno <option value=7>Luglio <option value=8>Agosto <option value=9>Settembre <option value=10>Ottobre <option value=11>Novembre <option value=12>Dicembre </select> <select name=anno> <option value=2003>2003 <option value=2004>2004 <option value=2005>2005 <option value=2006>2006 <option value=2007>2007 </select><br> Autore:<br> <input type=text size=40 name=autore><br> <br> E-mail:<br> <input type=text size=40 name=mail><br> <br> Testo:<br> <textarea cols=60 rows=40 name=testo></textarea><br> <br> Password:<br> <input type=password size=40 name=pass><br> <br><input type=submit value=Invia> </form> <? //Chiusura pagina foot(); ?> Codice:
<? include("top_foot.inc.php"); include("config.inc.php"); top(); //Confronta la password inserita dall'utente nel form con la pass nel file //config.inc.php //if($pass != $password): // echo "Password errata"; //Controlla che i campi titolo e testo non siano nulli o formati da soli spazzi elseif (trim($titolo) == "" OR trim($testo) == ""): echo "I campi Titolo e Testo devono essere riempiti!"; else: $titolo = addslashes(stripslashes($titolo)); $autore = addslashes(stripslashes($autore)); $mail = addslashes(stripslashes($mail)); $testo = addslashes(stripslashes($testo)); //Sostituisce i simboli con i corretti tag html e inserisce nel testo il //tag di fine riga $titolo = str_replace("<", "<", $titolo); $titolo = str_replace(">", ">", $titolo); $autore = str_replace("<", "<", $autore); $autore = str_replace(">", ">", $autore); $testo = str_replace("<", "<", $testo); $testo = str_replace(">", ">", $testo); $testo = nl2br($testo); //Converte la data in formato timestamp $data = mktime("0", "0", "0", $mese, $giorno, $anno); //Connettiti al database $db = mysql_connect($db_host, $db_user, $db_password); if($db == FALSE) die("Errore nella connessione. Verificare i parametri nel file config.inc.php"); mysql_select_db($db_name, $db) or die("Errore nella selezione del database.Verificare i parametri nel file config.inc.php"); //Query che si occuperà dell'inserzione nel db $query = "INSERT INTO news(titolo, testo, data, autore, mail) VALUES ('$titolo', '$testo', '$data', '$autore', '$mail')"; //Verifica se l'inserzione è avvenuta correttamente if(mysql_query($query, $db)) echo "L'articolo è stato inserito correttamente"; else echo "Errore durante l'inserimento !!!"; mysql_close($db); endif; foot(); ?> Codice:
<? function top() { ?> <HTML> <HEAD> <meta name=generator content="Script di freephp.it"> </HEAD> <BODY bgcolor=ffffff text=000000> <font face=verdana,tahoma,arial size=-1> <h1>FREEPHP.IT</h1><br> <? } function foot() { ?> </body></HTML> <? } ?> install.php Codice:
<?php include("config.inc.php"); $db = mysql_connect($db_host, $db_user, $db_password); if($db == FALSE) die("Errore nella connessione. Verificare i parametri in config.inc.php"); mysql_select_db($db_name, $db) or die("Errore nella selezione del database. Verificare i parametri nel file cofig.inc.php"); // Definisco una query per creare una tabella nel daabase selezionato $query = "CREATE TABLE news (id INT (5) UNSIGNED not null AUTO_INCREMENT, titolo VARCHAR (255) not null, testo TEXT not null, data INT (11), autore VARCHAR (50), mail VARCHAR (50), PRIMARY KEY (id))"; //Comunico la query precedentemente definita al database if(mysql_query($query, $db)) echo "L'installazione è stata eseguita con successo"; else echo "Errore durante l'installazione"; //Termino la connessione al database mysql_close($db); ?> Vi prego ditemi che c'è che non và :-( Grazie Andrea |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Suppongo che tu stia tentando di acccedere alle variabili passate tramite POST direttamente con il nome della variabile... Già da molto tempo (e la guida non è quindi aggiornata) non si può fare di default... Per accedere alle variabili passate tramite GET e POST devi usare i vettori globali associativi $_POST e $_GET...
if($_POST["pass"] != $password): Poi questa sintassi con i due punti non mi piace per niente... |
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Si alla fine avevo risolto perchè avevo trovato anche io questa informazione...ma perchè non posso accedervi direttamente?
si pure la sintassi dei 2 punti mi risultava strana...non sono una cima di php ma non mi era mai capitata di vederla...vabbè...basta non metterli ed è più standard...giusto? |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Dec 2002
Messaggi: 418
|
La questione penso sia che la form manda correttamente un valore per l'attributo "pass"...ma in save.php non sembra esserci nessuna linea di codice per intercettare questo e gli altri valori in arrivo dalla form...
Questo probabilmente perché si suppone che l'opzione register_globals sia "on". Vedi per maggiori dettagli il capitolo "Le variabili GET e POST" della guida base: http://freephp.html.it/guide/lezione.asp?id=197 EDIT: Mentre scrivevo il post Cionci mi ha preceduto... cmq almeno ho risposto al secondo post di D4rkAng3l: non puoi accedervi direttamente perché l'impostazione register_globals è su off ![]() Ultima modifica di BlueDragon : 30-08-2005 alle 23:10. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Si usano le parentesi { }
Non si può accedere direttamente con il nome per problemi di sicurezza... Sfruttando una riga di comando ad hoc si potevano variare i valori contenuti nelal variabili usate dai programmatori... |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Consiglio...usa un altro tutorial... Se il tutorial fa queste supposizioni non è adatto... |
|
![]() |
![]() |
![]() |
#7 | |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Quote:
mi pare che dopo aver dichiarato una prima volta una variabile nella forma $_POST["pass"] (dopo averla fatta passare dal form nella pagina insert.php) posso riutilizzarla invocandola nella forma normale pass Sbaglio? |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
No... Al massimo puoi fare così:
$pass = $_POST['pass']; Comunque ti conviene usarle tramite il vettore... In questo modo capisci meglio da dove provengono (visto che sono variabili globali)... |
![]() |
![]() |
![]() |
#9 | |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Quote:
avevo visto un po' di php 3 annetti fà...mi pare abbastanza simile al C (studiato all'uni) o sbaglio? |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Nella sintassi soprattutto è simile...
$_POST, $_GET, $_REQUEST sono vettori globali associativi (in cui un elemento può essere indicizzato sia con un numero che con una stringa)... |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:42.