• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto creare area personale

scatenato

Nuovo utente
Autore del topic
13 Aprile 2014
24
0
Miglior risposta
0
salve e grazie in anticipo a tutti quelli che mi risponderanno.

ho creato questo script in php per far registrare utenti al mio sito vi posto il codice :
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

il problema e che quando vengono riempiti i campi nel form mi viene ripetuto
l'errore:Tutti i campi sono obbligatori. prego riempire.
mi dite dove l'errore.
 
Ultima modifica da un moderatore:
Mi pare che tu ti stia basando sul lavoro fatto da Kaito nel topic: http://www.sciax2.it/forum/php-mysql/creare-sistema-login-registrazione-php-mysql-592992.html.


In ogni caso l'errore è dato dalla linea:
HTML:
Perfavore, Entra oppure Registrati per vedere i codici!
In cui l'attributo name deve corrispondere a quello poi analizzato in PHP. In tal caso possiamo modificare l'uno o l'altro ma per una migliore comprensione sistemiamo questo in:
HTML:
Perfavore, Entra oppure Registrati per vedere i codici!


Da notare che anche:
HTML:
Perfavore, Entra oppure Registrati per vedere i codici!
genera un errore in quanto la stringa per l'array associativo dev'essere PHP_SELF:
HTML:
Perfavore, Entra oppure Registrati per vedere i codici!
 
ho fatto le modifiche che mi hai fatto notare ma il problema persiste.
continua ad uscire la riga di codice echo "tutti i campi sono obbligatori.prego riempire";
non riesco a risolverlo ti prego se ti e possibile provare tutto il codice e dirmi dove il problema ti chiedo grazie in anticipo.
 
Ultima modifica:
salve e grazie in anticipo a tutti quelli che mi risponderanno.

ho creato questo script in php per far registrare utenti al mio sito vi posto il codice :

<?php
include('conn.php');

if(isset($_POST['submit']))
{
$nome = isset($_POST['nome']) ? clear($_POST['nome']) : false;
$username = isset($_POST['username']) ? clear($_POST['username']) : false;
$email = isset($_POST['email']) ? clear($_POST['email']) : false;
$password = isset($_POST['password']) ? clear($_POST['password']) : false;
//controllo campi: e che i campi non siano vuoti e che non superino
//la lunghezza
if(empty($nome) || empty($username) || empty($email) || empty($password)) {
echo 'Tutti i campi sono obbligatori. prego riempire.<br /> <br />
<a href="javascript:history.back();">Torna indietro</a>';
}elseif(strlen($nome) > 16) {
echo 'Nome non valido. massimo 16 caratteri.<br /><br />
<a href="javascript:history.back();">Torna indietro</a>';
}elseif(strlen($username) > 16) {
echo 'Username non valido. massimo 16 caratteri.<br /><br />
<a href="javascript:history.back();">Torna indietro</a>';
}elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
echo 'indirizzo email non valido.';
}elseif(strlen($email) > 60){
echo 'lunghezza non valida massimo 60 caratteri.<br /><br />
<a href="javascript:history.back();">Torna indietro</a>';
}elseif(strlen($password) < 4 || strlen($password) >8) {
echo 'Password non valido. minimo 4 caratteri e massimo 8.<br /><br />
<a href="javascript:history.back();">Torna indietro</a>';
}elseif(mysql_num_rows(mysql_query("SELECT * FROM registrati WHERE username like '$username'")) > 0) {
echo 'Username gia in uso scegli un altro nome.<br /> <br />
<a href="javascript:history.back();">Torna inditro</a>';
}elseif(mysql_num_rows(mysql_query("SELECT * FROM registrati WHERE email like '$email'")) > 0) {
echo 'Indirizzo email gia in uso.<br /> <br />
<a href="javascript:history.back();">Torna inditro</a>';
}else {
$password = md5($password);
if(mysql_query("INSERT INTO (nome, username, email, password) VALUES
('$nome','$urename','$email','$password' )")) {
echo '<b> Dati inviati correttamente utente registrato.controlla la tua posta elettronica.</b><br /><br />';
}else {
echo 'Errore nella query: '.mysql_error();
}

}
}else {

?>

<form align="center" action="<?php echo $_SERVER['PHP SELF']; ?>" method="POST" >
<legend>registrati</legend>

<input class="formreg" type="text" name="nome" autofocus required maxlength="16" placeholder="NOME"><br />

<input class="formreg" type="text" name="username" required maxlength="16" placeholder="USERNAME"><br />

<input class="formreg" type="text" name="email" required placeholder="EMAIL "><br />

<input class="formreg" type="text" name="ripeti password" required maxlength="8" placeholder="PASSWORD"><br />

<input class="bfreg" type="submit" name="submit" value="iscriviti gratis">
</form>
<?php

}
?>

il problema e che quando vengono riempiti i campi nel form mi viene ripetuto
l'errore:Tutti i campi sono obbligatori. prego riempire.
mi dite dove l'errore.

Prima di tutto cerca di ordinare bene il codice così, ho messo alcuni miglioramenti,

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Così dovrebbe andare, cerca di mantenere il codice ordinato, il tuo problema era, "||" nell' if,

Lezione di simboli lol:

|| vuol dire OR, se $a è VERO || $b è FALSO allora mostro VERO.

&& vuol dire AND, se $a || $b sono vere allora mostro VERO.
 
ho fatto le modifiche che mi hai fatto notare ma il problema persiste.
continua ad uscire la riga di codice echo "tutti i campi sono obbligatori.prego riempire";
non riesco a risolverlo ti prego se ti e possibile provare tutto il codice e dirmi dove il problema ti chiedo grazie in anticipo.

Personalmente non ho avuto problemi con quelle due modifiche che, di fatto, risolvono i problemi. In ogni caso ti posto il codice che ho utilizzato:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Prima di tutto cerca di ordinare bene il codice così, ho messo alcuni miglioramenti,

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Così dovrebbe andare, cerca di mantenere il codice ordinato, il tuo problema era, "||" nell' if,

Lezione di simboli lol:

|| vuol dire OR, se $a è VERO || $b è FALSO allora mostro VERO.

&& vuol dire AND, se $a || $b sono vere allora mostro VERO.
  • Mettendo tutti AND basta che uno solo dei campi non sia vuoto per affermare che tutti siano stati compilati. Direi che quindi salta il controllo su tutti i campi. Bisognerebbe negare le funzioni empty() ma direi che renderebbe il codice ancora più difficile da leggere.
  • Senza le modifiche che ho elencato nel post precedente lo script non funziona assolutamente, non mi serve nemmeno testarlo, prova tu stesso.
 
Personalmente non ho avuto problemi con quelle due modifiche che, di fatto, risolvono i problemi. In ogni caso ti posto il codice che ho utilizzato:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!


  • Mettendo tutti AND basta che uno solo dei campi non sia vuoto per affermare che tutti siano stati compilati. Direi che quindi salta il controllo su tutti i campi. Bisognerebbe negare le funzioni empty() ma direi che renderebbe il codice ancora più difficile da leggere.
  • Senza le modifiche che ho elencato nel post precedente lo script non funziona assolutamente, non mi serve nemmeno testarlo, prova tu stesso.

Io avevo avuto il tuo stesso problema, ho risolto mettendo una funzione, questa era una prima volta che testavo questo modo, la funzione che ho usato è questa: Prendo tutti i campi e l'inserisco in un array, dall'array li prendo con un while e controllo ognuno, poi do risposta.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Non ho testato ma forse funziona, invece qui ho trovato una sul sito di php.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
 
Io avevo avuto il tuo stesso problema, ho risolto mettendo una funzione, questa era una prima volta che testavo questo modo, la funzione che ho usato è questa: Prendo tutti i campi e l'inserisco in un array, dall'array li prendo con un while e controllo ognuno, poi do risposta.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Non ho testato ma forse funziona, invece qui ho trovato una sul sito di php.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Ma io non avevo quel problema, ho utilizzato gli OR. :-P E sì, se inserisci una funzione apposita allora qualcosa si può fare. ;) Però la prima non è del tutto corretta, manca un return true alla fine, altrimenti va sempre in errore (oltre che ad essere sintatticamente migliore). Oltretutto può esser ulteriormente semplificata: ;)
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
E si tratta per sempre di una funzioncina semplice ma efficace, magari può interessare a chi è agli inizi, può essere utile in diversi contesti. ;)

Mentre nel secondo caso array di array... Forse non è il caso di implementare una funzione così complessa, oltre che dover creare un array dei vari input, per una verifica così semplice. :-P
 
Che casino... @#Tuttarealstep è a dir poco scan-da-lo-so inserire AND come operatore logico all'interno di una pagina di registrazione.
Ad ogni modo @scatenato tu sbagli proprio... almeno 1-2 volte hai sbagliato a scrivere username. Poi pretendi che una variabile assuma il valore del form chiamato password quando questo in realtà si chiama ripeti password. E ultima cosa, hai usato un ragionamento stupido, anzi, errore di sintassi stupido.

INSERT INTO (nome, username, email.....
Inserisci dentro i valori nome, username email... MA DENTRO DOVE? Non specifichi il nome della tabella dove fare riferimenti per inserire questi valori?

Il mio ultimo consiglio è questo: STUDIA la programmazione web (HTML, PHP, MySQL, Javascript...) e non copiare tutto e sempre dagli altri senza capire un tubo. E dico "copiare" perché è evidente che questo codice lo hai copiato (e anche male) da @Kaito.

Eccoti il codice aggiustato:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
 
Ultima modifica:
habbofanNumero1 : sto gia studiando la programmazione e non ho copiato proprio niente,lo scritto io ma come hai potuto notare con evidenti errori di inesperienza in questo campo, ma grazie al vostro aiuto imparo molto piu velecemente,grazie per avermi aiutato.
 
habbofanNumero1 : sto gia studiando la programmazione e non ho copiato proprio niente,lo scritto io ma come hai potuto notare con evidenti errori di inesperienza in questo campo, ma grazie al vostro aiuto imparo molto piu velecemente,grazie per avermi aiutato.

Bene, posso quindi spostare nei problemi risolti ;)
 
habbofanNumero1 : sto gia studiando la programmazione e non ho copiato proprio niente,lo scritto io ma come hai potuto notare con evidenti errori di inesperienza in questo campo, ma grazie al vostro aiuto imparo molto piu velecemente,grazie per avermi aiutato.

Mi fa piacere il fatto che impari dai codici altrui, però almeno devi imparare. Inoltre, ti dico che hai copiato perché quel codice è spiaccicato a quello di Kaito ;)