Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

Errore in php ma non so cosa c'è di sbagliato

Cerchi consigli per migliorare il tuo sito? Vuoi aprire un sito in poco tempo?
Discuti con altri webmaster, chiedi chiarimenti ed opinioni in tutta libertà.
Lo spam verrà cancellato.

Errore in php ma non so cosa c'è di sbagliato

Messaggioda jonni125 » mar giu 24, 2008 3:56 pm

Salve ragazzi ho manipolato un po' uno script in php per il salvataggio degli ip in modo che mi salvi i dati di un modulo, ma non funziona o meglio funziona a metà infatti mi salva solo il nome il cognome ma non salva il resto,lo script è questo:

Codice: Seleziona tutto
<?
$nome = $_POST["nome"]; // recupera il nome
$email = $_POST["email"]; // recupera l' e-mail
$cognome = $_POST["cognome"]; // recupera il cognome
//Apro il file ip.html, se non esiste lo creo
$apro=fopen('ip.html', 'a+');
//Scrivo nel file aperto i dati
fwrite($apro, "<tr><td>" . $nome . "</td><td>" . $email . "</td><td><center>" . $cognome. "</td><td><center>" . $data_giorno . "</center></td><td><center>" . $data_ora . "</center></td></tr>");
//Chiudo la connessione aperta
fclose($apro);


Il modulo è il solito:
Codice: Seleziona tutto
<html>
<head>
<title> Registrazione </title>
</head> <body>
<table> <tr> <td> <form action="registrazione.php" method="post"> Nome </td> <td> <input type="text" name="nome"> </td> </tr>
<tr> <td> Cognome </td> <td> <input type="text" name="cognome"> </td> </tr>
<tr> <td> E-Mail</td> <td> <input type="text" name="email"> </td> </tr>
<tr> <td> Password </td> <td> <input type="password" name="password"> </td> </tr>
<tr> <td> Ripeti Password </td> <td> <input type="password" name="password2">
<input type="submit" class="submit" name="Invia" value="Invia registrazione">
</form> </td> </tr>
</body>


Grazie in anticipo per l' aiuto che mi darete (almeno spero che me lo darete)
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda M@ttia » mar giu 24, 2008 4:51 pm

Codice: Seleziona tutto
<?
$nome    = $_POST["nome"];    // Recupera il nome
$email   = $_POST["email"];   // Recupera l'e-mail
$cognome = $_POST["cognome"]; // Recupera il cognome

$apro=fopen('ip.html', 'a+'); // Apro il file ip.html, se non esiste lo creo

// Scrivo nel file aperto i dati
fwrite($apro, "<tr><td>" . $nome . "</td><td>" . $email . "</td><td><center>" . $cognome . "</td><td><center>" . $data_giorno . "</center></td><td><center>" . $data_ora . "</center></td></tr>");

fclose($apro);                // Chiudo la connessione aperta
?>


Nell'fwrite guarda che dopo $cognome non hai lasciato lo spazio fra $cognome e il punto (qui sopra l'ho riscritto un po' più leggibile e ho messo lo spazio).
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda jonni125 » mer giu 25, 2008 7:31 am

Grazie ora è perfetto posso salvare anche le password ma mi interesserebbe sapere come faccio a fare in modo che uno è obbligato a mettere tutti i campi tranne nome e cognome e il campo password e ripeti password siano uguali???
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!


Messaggioda jonni125 » mer giu 25, 2008 8:00 am

e poi un ultimissima cosa: lo ho modificato ulteriormente in modo che mi mettesse data e ora, le mette ma non le mette giuste nella tabella

Questo è il codice del file in php:
Codice: Seleziona tutto
<?
$nome    = $_POST["nome"];    // Recupera il nome
$email   = $_POST["email"];   // Recupera l'e-mail
$cognome = $_POST["cognome"]; // Recupera il cognome
$password   = $_POST["password"];   // Recupera la password
$password = $_POST["password2"]; // Recupera la seconda password
//Stabilisco la data
$data_ora=date("H:i:s");
$data_giorno=date("d/m/Y");
//$data_ora=mktime($data_ora_unix);
//$data_giorno=mktime($data_giorno_unix);


$apro=fopen('registrati.html', 'a+'); // Apro il file registrati.html, se non esiste lo creo

// Scrivo nel file aperto i dati
fwrite($apro, "<tr><td>" . $nome . "</td><td>" . $email . "</td><td><center>" . $cognome . "</td><td><center>" . $password . "</td><td> . "</center></td>" . $data_giorno . "</center></td><td><center>" . $data_ora . "</center></td></tr>");

fclose($apro);                // Chiudo la connessione aperta
?>


e questo è il codice della tabella:

Codice: Seleziona tutto
<table border="1">
<tr><td><center><b>Nome</b></center></td><td><center><b>E-mail</b></center></td><td><center><b>Cognome</b></center></td><td><center><b>Password</b></center></td><td><center><b>Ripeti password</b></center></td></tr>
<tr><td><center>Nome</center></td><td><center>E-mail</center></td><td><center>Cognome</center></td><td><center>Password</center></td><td><center>Giorno di accesso</center></td><td><center>Ora di accesso</center></td></tr>


Me li potete aggiustare o farmi capire dove è l' errore per favore??
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda ste_95 » mer giu 25, 2008 8:31 am

Strano, lo script è molto simile al mio TakeIP... [rolleyes]
«A volte è meglio tacere e sembrare stupidi che aprir bocca e togliere ogni dubbio.» Oscar Wilde
Avatar utente
ste_95
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 17271
Iscritto il: lun ago 06, 2007 11:19 am

Messaggioda jonni125 » mer giu 25, 2008 8:57 am

ghighighi Scusa Ho modificato un po' la tabella del tuo e ho preso spunto da la infatti...

Però mi potete aiutare per favore?? dai?? [cry+] [cry+]
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda M@ttia » mer giu 25, 2008 10:45 am

Allora, $password poi dopo lo devi chiamare ovviamente $password2, sennò lo sovrascrivi.

In secundis, le password non vanno mai salvate esplicitamente, questo per rispetto della privacy ma anche perché non è corretto che altri possano rubare la password accedendo a quel semplicissimo file html.

Codice: Seleziona tutto
<?
$nome      = $_POST["nome"];      // Recupera il nome
$email     = $_POST["email"];     // Recupera l'e-mail
$cognome   = $_POST["cognome"];   // Recupera il cognome
$password  = $_POST["password"];  // Recupera la 1a pwd
$password2 = $_POST["password2"]; // Recupera la 2a pwd

if($password != $password2) { ... errore, non combaciano ...};
$password = md5($password);       // Cripto la Password, ora
                                  // è irrecuperabile
//Stabilisco la data
$data_ora    = date("H:i:s");
$data_giorno = date("d/m/Y");

$apro=fopen('registrati.html', 'a+'); // Apro/creo il file registrati.html

// Scrivo nel file aperto i dati
fwrite($apro,
'<tr>
  <td><center>' . $nome        . '</center></td>
  <td><center>' . $email       . '</center></td>
  <td><center>' . $cognome     . '</center></td>
  <td><center>' . $password    . '</center></td>
  <td><center>' . $data_giorno . '</center></td>
  <td><center>' . $data_ora    . '</center></td>
 </tr>');

fclose($apro);                    // Chiudo la connessione aperta
?>


Per quanto riguarda questo file (premettendo che io odio le tabelle e strapreferisco CSS + Div, ma bom...), se il file lo crei/aggiorni ogni volta, significa che, col codice sopra, il risultato sarà del tipo:

<table>
<tr><td>...</td>...<td>...</td></tr>
<table>
<tr><td>...</td>...<td>...</td></tr>
<table>
<tr><td>...</td>...<td>...</td></tr>
...

che ovviamente non è corretto (apri mille volte il <table> e non lo chiuderai mai).

Ovviamente l'idea migliore è quella di usare un database MySql (che col php vanno a braccetto). Per restare nella "grezzata" del file txt o html (che, ricordo, è facile da rubare anche per gente esterna, mentre col database servono delle falle), in questo semplice esempio dovresti aprire/chiudere ogni volta la tabella...

Codice: Seleziona tutto
<table border="1">
  <tr>
    <td><center><b>Nome</b></center></td>
    <td><center><b>E-mail</b></center></td>
    <td><center><b>Cognome</b></center></td>
    <td><center><b>Password</b></center></td>
    <td><center><b>Ripeti password</b></center></td>
  </tr>
  <tr>
    <td><center>Nome</center></td>
    <td><center>E-mail</center></td>
    <td><center>Cognome</center></td>
    <td><center>Password</center></td>
    <td><center>Giorno di accesso</center></td>
    <td><center>Ora di accesso</center></td>
  </tr>
</table>
Ultima modifica di M@ttia il mer giu 25, 2008 1:10 pm, modificato 5 volte in totale.
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda jonni125 » mer giu 25, 2008 11:24 am

Scusami ma nel file in php c'è un errore ma non so come risolverlo mi esce questo:

Parse error: syntax error, unexpected '.' in /membri/jonni1995/dwq/registrazione.php on line 8

e poi ci sarebbe un modo per verificare l' uguaglianza delle 2 password con un alert?
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda M@ttia » mer giu 25, 2008 11:31 am

Il messaggio ti dice che c'è un punto (.) di troppo in una qualche stringa (non hai chiuso le " prima del punto di concatenazione, ecc., guarda la linea 8 appunto).

PHP è server-side, quindi non puoi fare un alert con lui. Puoi usare php per scrivere il codice javascript alert o fare un echo direttamente con php, ad ogni modo va nel mio codice sopra nelle {...}, ovviamente poi impedendo che il codice vada avanti salvando le variabili poiché sbagliate.

Se poi volevi fare che l'utente scrivesse una password, un nome o un cognome "non vuoto", ti basta verificare la lunghezza di $nome, $cognome, ecc. col comando len($stringa);
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda jonni125 » mer giu 25, 2008 11:33 am

quindi cosa dovrei fare per risolvere questo errore??
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda M@ttia » mer giu 25, 2008 11:47 am

Ma scusa, avrai mica copiato

{ ... errore, non combaciano ...}

[acc2] [acc2] [acc2]

quello significa che, fra le parentesi graffe, mettici quello che vuoi per generare l'errore (stampa a schermo che non combaciano, ecc., quello che vuoi...).
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda jonni125 » mer giu 25, 2008 12:49 pm

In effetti avevo copiato...
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda jonni125 » mer giu 25, 2008 12:51 pm

ora mi dice che c'è un errore alla riga 18 ma l' errore ora è "/" e il resto del messaggio come prima ma alla riga 18 non c'è uno slash
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda M@ttia » mer giu 25, 2008 1:11 pm

Te l'ho ri-corretto nel messaggio sopra: hai fatto un po' di casotto con le "" non chiuse (le ho inoltre rimpiazzate con delle ' , poiché le " si usano senza concatenazione (leggono le variabili direttamente all'interno), mentre le ' sono più "leggere" ma necessitano della concatenazione).
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda jonni125 » mer giu 25, 2008 1:16 pm

ma ora non le salva giuste le cose non le mette nella tabella ma in mezzo alla pagina... la tabella è quella che mi hai dato tu...
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda M@ttia » mer giu 25, 2008 1:22 pm

Beh guarda, se uno che conosce l'html, il php, ecc. ha un piccolo problema in un punto, una funzione, ecc. e chiede aiuto ok, ma per queste cose banali come una tabella o una funzione print di php esistono manuali dai più esperti ai più "primi passi", e senza una base di quelli mi spiace ma non posso starti a correggere ogni riga appena non va una qualsiasi cosettina, quella è semplicissima sintassi che, anche soltanto con le guide di html.it, in un paio di giorni correggi da solo e capisci anche il perché, perché sennò così non si va più avanti: ti ho corretto 5 volte di fila perché speravo che con quello potessi andare avanti a leggere e imparare, ma venire qua a trovare il correttore automatico e la pappa pronta no... Senza rancore eh! Ciao.
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda jonni125 » mer giu 25, 2008 1:51 pm

Scusa... [cry+] [cry+]
e che l' errore non è nella tabella è in un altro posto perché la psw non me la fa vedere giusta ma me la fa vedere cifrata e io non so come "scifrarla" a me...
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda M@ttia » mer giu 25, 2008 2:17 pm

La password è VOLUTAMENTE cifrata (funzione sopra MD5 nel codice), così nessuno saprà mai la password, ma si potrà solo confrontare se quella inserita domani è uguale a quella che hai salvato al suo tempo (la password "scifrata" non la saprà mai nessuno, nemmeno tu che gestisci il sito, è ovunque così su internet. Se la password cifrata è $password_cifrata e quella che l'utente inserisce oggi la chiamiamo $password_normale, per verificare se l'utente ha davvero inserito la password giusta basta fare il controllo

if($password_cifrata = md5($password_normale)) {... allora è giusta ...}

Così facendo la password "normale" non è mai stata vista da nessuno né tantomeno salvata leggibile da nessuna parte, e la sicurezza è (quasi) totale.

Se un domani tizio dovesse dimenticarsi la password, nessuno sarà (correttamente) in grado di recuperarla, ma se ne imposterà una nuova temporanea e poi lui la cambierà con una sua nuova (anche su questo forum è così: nessuno potrà mai sapere la tua password, nemmeno gli amministratori: si può solo controllare se quella che inserisci è giusta, ma mai risalire all'originale da quella criptata in MD5).
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda eDog » mer giu 25, 2008 3:12 pm

M@ttia ha scritto:La password è VOLUTAMENTE cifrata (funzione sopra MD5 nel codice), così nessuno saprà mai la password, ma si potrà solo confrontare se quella inserita domani è uguale a quella che hai salvato al suo tempo (la password "scifrata" non la saprà mai nessuno, nemmeno tu che gestisci il sito, è ovunque così su internet. Se la password cifrata è $password_cifrata e quella che l'utente inserisce oggi la chiamiamo $password_normale, per verificare se l'utente ha davvero inserito la password giusta basta fare il controllo

if($password_cifrata = md5($password_normale)) {... allora è giusta ...}

Così facendo la password "normale" non è mai stata vista da nessuno né tantomeno salvata leggibile da nessuna parte, e la sicurezza è (quasi) totale.

Se un domani tizio dovesse dimenticarsi la password, nessuno sarà (correttamente) in grado di recuperarla, ma se ne imposterà una nuova temporanea e poi lui la cambierà con una sua nuova (anche su questo forum è così: nessuno potrà mai sapere la tua password, nemmeno gli amministratori: si può solo controllare se quella che inserisci è giusta, ma mai risalire all'originale da quella criptata in MD5).


A meno che il tipetto non voglia fare script di tipo "fake login" o altre lamerate [rolleyes]
eDog,
"È meglio essere temuti o rispettati? Io dico: è troppo chiedere entrambe le cose?" - Tony Stark
Avatar utente
eDog
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3679
Iscritto il: sab dic 30, 2006 7:58 pm
Località: Vescovana (Padova)

Messaggioda M@ttia » mer giu 25, 2008 3:37 pm

Beh per quello basterebbe semplicemente salvare la password direttamente e basta (il php l'utente non lo vede, dovrebbe fidarsi e basta). La crittazione della password è quasi un bene maggiore per l'amministratore del sito che per l'utente, in quanto eviti che qualcuno possa hackerarti il sito-database e rubarti le password dei tuoi utenti che poi sarebbero belli incazzati con te...
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Prossimo

Torna a Sviluppo Web

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising