Registrazione PHP

ispanic

Utente Attivo
28 Ago 2014
119
0
0
Ciao ragazzi, ho creato perfettamente una registrazione in php e ogni volta che c'è un errore questa rimanda l'utente in una pagina dove appunto è scritto l'errore commesso, ma vorrei modifcarla in modo che se l'utente commette un errore, l'input di testo diventa con un background-color diverso dal precedente (magari rosso) e quindi cambia solamente il colore della casella ma non riporta ad un'altra pagina, come fare?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
si può fare in diversi modi,
ma non hai postato il tuo codice, quindi è difficile inventarsi qualcosa che puoi immettere direttamente nel codice che hai sviluppato
per cui, di seguito, trovi un esempio funzionante da cui puoi trarre un'idea
ciao
Marino

PHP:
<FORM method="post">
<?php

# http://localhost/test_site/php/test/x.php

  if (!empty($_POST['btnER']))
    echo '<INPUT type="text" name="text" STYLE="color: black; font-family: Verdana; font-weight: bold; font-size: 12px; background-color: red;">';
  else
    echo '<INPUT type="text" name="text" STYLE="color: black; font-family: Verdana; font-weight: bold; font-size: 12px; background-color: white;">';
?>
 <input type="submit" name="btnOK" value="dati ok">
 <input type="submit" name="btnER" value="dati errati">
</FORM>
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
PHP:
<form method="post" action="pagina.php">
<?php

session_start();
include ("connessione.php");

$nome_utente = ($_POST['nome_utente']);
$password = ($_POST['password']);


$sql = "SELECT * FROM users WHERE nome_utente = '$nome_utente'
and password = '$password'";
$result = mysql_query($sql);

$count= mysql_num_rows($result);

if ($count == 1)
{
	$_SESSION['nome_utente'] = $nome_utente;
	$_SESSION['password'] = $password;
	header("location:pagina_log.php");
	exit;

}


else 

{

        echo '<input placeholder="Nome utente" tabindex="1" class="nuvola_rossa"  name="nome_utente" type="text" maxlength="40"/>';
	exit;
}
 
?>
<fieldset class="nuvola">
<input placeholder="Nome utente" tabindex="1" class="nuvola"  name="nome_utente" type="text" maxlength="40"/>

dopo continuerà con password e form, ma già in questo modo non funziona, è così? cosa ho sbagliato?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
non ho mysql ed ho simulato l'errore commentando le istruzioni per leggere il database e forzando il contatore
prova il codice così, poi riportalo con mysql attivo
se hai ancora problemi, fatti vivo
ciao
Marino
PHP:
<?php 

# http://localhost/test_site/php/test/pagina.php

session_start(); 

$tipo_nuvola = "nuvola";

if (!empty($_POST['nome_utente']))
{ 
  include ("connessione.php"); 

  $nome_utente = ($_POST['nome_utente']); 
  $password = ($_POST['password']); 

  $sql = "SELECT * FROM users WHERE nome_utente = '$nome_utente' and password = '$password'"; 
//  $result = mysql_query($sql); 

//  $count= mysql_num_rows($result);

$count=2;

  if ($count == 1) 
  { 
    $_SESSION['nome_utente'] = $nome_utente; 
    $_SESSION['password'] = $password; 
    header("location:pagina_log.php"); 
    exit; 
  } 
  else  
  { 
    $tipo_nuvola = "nuvola_rossa";
  } 
} 
?> 
<!DOCTYPE html>
<head>
<style type="text/css">
.nuvola		{ color: black; font-family: Verdana; font-weight: bold; font-size: 12px; background-color: white;}
.nuvola_rossa	{ color: black; font-family: Verdana; font-weight: bold; font-size: 12px; background-color: red;}
</style>
</head>
<body>
<form method="post" action="pagina.php"> 
<input placeholder="Nome utente" tabindex="1" class="<?= $tipo_nuvola; ?>" name="nome_utente" type="text" maxlength="40"/>
</form>
</body>
</html>
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
Ciao marino, ho provato il tuo script ma c'è un errore... la variabile $tipo può avere solo un assegnamento e così in questo modo tu cambi l'assegnazione e i font saranno o tutti bianchi o tutti di un altro colore
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
non so se interpreto bene le tue parole, provo con questo suggerimento,
se vuoi gestire la condizione di errore per più input del form, puoi definire più variabili, una per ogni input
(es. $nome_nuvola, $pass_nuvola ... )
modificando di conseguenza il css (se necessario)
e gestendo tutto con la stessa tecnica
se non ho interpretato bene, fai sapere
ciao
Marino
 
Ultima modifica:

ispanic

Utente Attivo
28 Ago 2014
119
0
0
Sì marino questo sì però non intendevo ciò.
Voglio dire che se magari inzializzo una variabile prima facendo così $tipo = "form";
e poi metto una condizione sulla variabile e se questa è vera $tipo = "form_1" non funziona..
Perchè $tipo sarà sempre uguale a $tipo = "fom_1", almeno a me succede questo, infatti le caselle sono sempre rosse, non solo quando si sbaglia ad immettere i dati, ma da subito
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
Ok, allora invece che il login ho provato a modificare la registrazione

PHP:
<?php

session_start ();
include ("connessione.php");

$tipo = "form";

$password = ($_POST['password']);
$conferma_password = ($_POST['conferma_password']);

if ($password != $conferma_password)
{
	$tipo = "form_1";
	
}

else  {

$query = "insert into users (password)
values ('$password')";

$result = mysql_query ($query, $connessione);

if ($result == 0) 
{
 die ("Errore di registrazione");
} 

else


{
	header ("location:registrazione_completa.html");
	exit;
}
   
}
Il problema è che non funge, i campi all'apertura della pagina si presentano subito rossi e all'errore non cambiano il loro colore
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
il tuo script php è "ben messo", probabilmente l'errore è in un'altra posizione
d'altra parte non hai postato l'intero "set"

in ogni caso per dimostrarti il funzionamento,
ho usato il tuo script php
ho aggiunto la parte html con css
ho disabilitato "mysql_query" mettendo il risultato a 1
ed infine ho evitato di chiamare il passo successivo "registrazione_completa.html"

puoi eseguire "registrazione.php" sotto riportato,
cliccando quante volte vuoi il bottone "registra", i campi restano bianchi
se inserisci "a" e "b" cliccando il bottone "registra", i campi diventano rossi e se clicchi una seconda volta tornano bianchi
infine se inserisci "a" e "a" restano bianchi

non so che altro inventare per capire dove puoi avere l'errore
ma quanto ti ho suggerito funziona perchè provato prima di postarlo
fai sapere, ciao
Marino

PHP:
<?php 

# http://localhost/test_site/php/test/ispanic/registrazione.php

session_start (); 
include ("connessione.php"); 

$tipo = "form"; 

if (!empty($_POST['password']))
{ 
  $password = ($_POST['password']); 
  $conferma_password = ($_POST['conferma_password']); 

  if ($password != $conferma_password) 
  { 
    $tipo = "form_1"; 
  } 
  else
  { 
    $query = "insert into users (password) values ('$password')"; 
//    $result = mysql_query ($query, $connessione); 
$result = 1;
    if ($result == 0)  
    { 
      die ("Errore di registrazione"); 
    }  
    else 
    { 
//      header ("location:registrazione_completa.html"); 
//      exit; 
    } 
  }  
}  
?>  
<!DOCTYPE html> 
<head> 
<style type="text/css"> 
.form	{ color: black; font-family: Verdana; font-weight: bold; font-size: 12px; background-color: white;} 
.form_1	{ color: black; font-family: Verdana; font-weight: bold; font-size: 12px; background-color: red;} 
</style> 
</head> 
<body> 
<form method="post" action="registrazione.php"> 
<input placeholder="password" tabindex="1" class="<?= $tipo; ?>" name="password" type="text" maxlength="40" /> 
<input placeholder="conferma password" class="<?= $tipo; ?>" name="conferma_password" type="text" maxlength="40" /> 
<input name="submit" type="submit" value="Registra" />
</form> 
</body> 
</html>
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
Bah, non capisco proprio, ora ti posto tutto il codice e la finiamo.. volevo riuscire a capire da solo il mio errore ma non lo trovo proprio: sempre stesso problema tutti i form rossi sempre.

PHP:
<?php


session_start ();
include ("connessione.php");

$tipo = "form";

$nome_utente = ($_POST['nome_utente']);
$password = ($_POST['password']);
$conferma_password = ($_POST['conferma_password']);
$email = ($_POST['email']);
$conferma_email = ($_POST['conferma_email']);
$anno = ($_POST['anno']);
$mese = ($_POST['mese']);
$giorno = ($_POST['giorno']);

if($POST['spam'] != '') header("location:pagina.html");

if ($password != $conferma_password)
{
	$tipo = "form_1";
	
}

elseif ($email != $conferma_email)
{
       $tipo = "form_1";
	
}

if (strlen ($password) < 6)
{
	$tipo = "form_1";

}

$pattern = "/[^A-Z0-9]/i";

$result = preg_match($pattern, $nome_utente);

if ($result)

{
	$tipo = "form_1";

	
}

$pattern = "/[^A-Z0-9]/i";

$result = preg_match($pattern, $password);

if ($result)

{
	$tipo = "form_1";

	
}


	$email = trim($email);
	
	if(!$email)
{

	 $tipo = "form_1";
	 
	     
}

	$num_at = count(explode('@', $email)) -1;
	if($num_at != 1)
	{

	 $tipo = "form_1";

	 
	     
}
	if (strpos($email, ';') and strpos($email, ',') and strpos($email, ''))
	{

	 $tipo = "form_1";

	 
	     
}
	if(!preg_match( '/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $email))
	{

	 $tipo = "form_1";
}


else {

$query = "insert into users (nome_utente, password, email, anno, mese, giorno)
values ('$nome_utente' , '$password' , '$email', '$anno', '$mese', '$giorno')";

$result = mysql_query ($query, $connessione);

if ($result == 0) 
{
 die ("Errore di registrazione");
} 

else

{  
	header ("location:registrazione_completa.html");
	exit;
}
   
}

?>

HTML:
<form method="post" action="">
<input placeholder="Nome utente" class="<?= $tipo; ?>"  name="nome_utente" type="text" maxlength="40"/>//altri form uguali e identici.
All'inizio della pagina si trova il codice php e dopo tutto quello html, mentre il codice css si trova in un foglio di stile esterno.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
parlando di errori (salvo che sia un errore di copy/paste) qui c'è un errore

PHP:
<form method="post" action="pagina.php">
<?php
session_start();
include ("connessione.php");
//...ecc...
?>
session_start deve essere la prima istruzione, prima di qualsiasi output html (anche uno spazio) a meno che tu non usi il reindirizzamento del flusso ob_start();.... ob_end_flush();
dovresti correggere così
PHP:
<?php
session_start();
?>
<form method="post" action="pagina.php">
<?php
include ("connessione.php");
//...ecc...
?>
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
come ti avevo detto in un post precedente,
devi differenziare il "tipo" gestendone uno specifico, per ogni campo che intendi controllare
se tutti i campi vengono controllati dallo stesso tipo, sicuramente o sono tutti bianchi o tutti rossi

ho modificato anche "$POST['spam']" probabilmente manca il tratto

scusa ma ho modificato il controllo degli errori,
mi sembra che il tuo script, permetta la scrittura del db, nel caso psw e mail siano uguali al loro duplicato

ho aggiunto un "trim" sul controllo della password altrimenti 6 spazi erano sufficienti per essere accettata

ho aggiunto il controllo sul nome

ho gestito il bottone per "submit"

poi ... lavoraci tu, modifica e vedi l'effetto che fa
ciao
Marino
PHP:
<?php 
session_start (); 
include ("connessione.php"); 

$tipo_pass = "form"; 
$tipo_email = "form"; 
$tipo_nome = "form";
$count_err = 0;

if (!empty($_POST['submit'])){ 

	$nome_utente = ($_POST['nome_utente']); 
	$password = ($_POST['password']); 
	$conferma_password = ($_POST['conferma_password']); 
	$email = ($_POST['email']); 
	$conferma_email = ($_POST['conferma_email']); 
	$anno = ($_POST['anno']); 
	$mese = ($_POST['mese']); 
	$giorno = ($_POST['giorno']); 

	if($_POST['spam'] != '') header("location:pagina.html"); 

	if ($password != $conferma_password) 
	{ 
		$tipo_pass = "form_1"; 
		$count_err = 1;
	} 

	if ($email != $conferma_email) 
	{ 
		$tipo_email = "form_1"; 
		$count_err = 1;
	} 

	if (strlen (trim($password)) < 6) 
	{ 
		$tipo_pass = "form_1"; 
		$count_err = 1;
	} 

	if (strlen (trim($nome_utente)) == 0) 
	{ 
		$tipo_nome = "form_1"; 
		$count_err = 1;
	} 

	$pattern = "/[^A-Z0-9]/i"; 
	$result = preg_match($pattern, $nome_utente); 
	if ($result) 
	{ 
		$tipo_nome = "form_1"; 
		$count_err = 1;
	} 

	$pattern = "/[^A-Z0-9]/i"; 
	$result = preg_match($pattern, $password); 
	if ($result) 
	{ 
		$tipo_pass = "form_1"; 
		$count_err = 1;
	} 

	$email = trim($email); 
	if(!$email) 
	{ 
		$tipo_email = "form_1"; 
		$count_err = 1;
	} 

	$num_at = count(explode('@', $email)) -1; 
	if($num_at != 1) 
	{ 
		$tipo_email = "form_1"; 
		$count_err = 1;
	} 

	if (strpos($email, ';') and strpos($email, ',') and strpos($email, '')) 
	{ 
		$tipo_email = "form_1"; 
		$count_err = 1;
	} 

	if(!preg_match( '/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $email)) 
	{ 
		$tipo_email = "form_1"; 
		$count_err = 1;
	} 

	if($count_err == 0) { 

		$query = "insert into users (nome_utente, password, email, anno, mese, giorno) 
		values ('$nome_utente' , '$password' , '$email', '$anno', '$mese', '$giorno')"; 

		$result = mysql_query ($query, $connessione); 

		if ($result == 0)  
		{ 
			die ("Errore di registrazione"); 
		}  
		else 
		{   
			header ("location:registrazione_completa.html"); 
			exit; 
		} 
	} 
} 
?> 
<!DOCTYPE html>
<head>
<style type="text/css">
.form	{ color: black; font-family: Verdana; font-weight: bold; font-size: 12px; background-color: white;}
.form_1	{ color: black; font-family: Verdana; font-weight: bold; font-size: 12px; background-color: red;}
</style>
</head>
<body>
<form method="post" action="pagina.php"> 
<form method="post" action="">
<input placeholder="Nome utente" class="<?= $tipo_nome; ?>"  name="nome_utente" type="text" maxlength="40" /><br />
<input placeholder="Password" class="<?= $tipo_pass; ?>"  name="password" type="text" maxlength="40" /><br />
<input placeholder="Conferma password" class="<?= $tipo_pass; ?>"  name="conferma_password" type="text" maxlength="40" /><br />
<input placeholder="email" class="<?= $tipo_email; ?>"  name="email" type="text" maxlength="40" /><br />
<input placeholder="Conferma email" class="<?= $tipo_email; ?>"  name="conferma_email" type="text" maxlength="40" /><br />
<input placeholder="anno di nascita" class="form" name="anno" type="text" maxlength="4" /><br />
<input placeholder="mese" class="form" name="mese" type="text" maxlength="4" /><br />
<input placeholder="giorno" class="form" name="giorno" type="text" maxlength="4" /><br />
<input name="submit" type="submit" value="Registra" />
</form>
</body>
</html>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa perche fai tutto qull'ambaradan per la verifica dell'email?
basta
PHP:
<?php
//.....
$email=filter_var($email, FILTER_SANITIZE_EMAIL);
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
	$tipo_email = "form_1"; 
	$count_err = 1;
}
//.....
?>
 
Discussioni simili
Autore Titolo Forum Risposte Data
F [PHP]Errore registrazione PHP 8
A [PHP] registrazione utente in un database sql con confronto PHP 1
A [PHP] Controllo nome utente form di registrazione PHP 4
Tommy03 Generare file PHP dopo registrazione PHP 2
G [PHP] Revisione codice per registrazione PHP 8
B [PHP] Mail di Avvenuta registrazione PHP 4
damiano.f [PHP] variabili su immagine e registrazione dati su db PHP 0
L [PHP] Registrazione/Logina la psw deve contenere.. PHP 3
ANDREA20 [PHP] problema registrazione PHP 50
P [PHP] come criptare una password in un form di registrazione PHP 4
F Codic e php visibile su form registrazione utenti PHP 2
P Problema con file di registrazione in php, non funziona e dà continui errori PHP 0
G Inserimento array proveniente da un modulo di registrazione con PHP e MySQL PHP 6
F script php form registrazione PHP 13
M Pagina di registrazione e login in php PHP 4
D Problema script registrazione utente php mysql PHP 14
A form registrazione + php + alert javascript Javascript 6
zorro modulo di registrazione: funziona ma non sempre PHP 2
R Plugin per Registrazione Utente e Pagamento prodotto WordPress 2
T Modificare ruolo utenti in fase di registrazione E-Commerce 0
G Registrazione utente su pagina asp Classic ASP 14
R Obbligare all'utente un pagamento al momento della registrazione PHP 3
E Problemi in registrazione telecamere Dahua IP Cam e Videosorveglianza 6
B Data Registrazione Dominio Domini 1
S registrazione video su dvr in caso di rilevamento di movimento IP Cam e Videosorveglianza 12
Laskot [Javascript] Registrazione e salvataggio utenti in LocalStorage Javascript 8
V Domande: registrazione sito fonti esterne SEO e Posizionamento 0
M registrazione in relazione ai commenti Programmazione 0
X__WELBO__X [css] form registrazione utente HTML e CSS 9
marino51 problema con registrazione al forum Supporto Mr.Webmaster 4
G [WordPress] Redirect dopo registrazione WordPress 0
S Vecchio articolo registrazione utenti, errore MySQL PHP 2
M Sito "e-commerce", stampare dati di registrazione e dati dell'acquisto da pagine diverse PHP 7
S appinventor, aggiungere tasto registrazione Sviluppo app per Android 1
M problema registrazione nuovi utenti su pagine asp Classic ASP 1
S email di registrazione e Plugin WP Mail SMTP WordPress 0
F form registrazione PHP 3
matteoraggi Contratto per registrazione domini internet e servizio di hosting Domini 1
L errore mysql per form di registrazione PHP 3
D Form Registrazione con conferma via email - problema PHP 10
M problema mostrare data di registrazione formattata in italiano PHP 8
M pagina registrazione con mail contenente link di attivazione profilo PHP 1
felino [Wordpress] Plugin iscrizione / registrazione WordPress 1
M Problema con modulo registrazione e inserimento dati in database PHP 8
M Creazione sito con autenticazione utente (registrazione) PHP 3
I Registrazione con Ajax Ajax 1
L Form di registrazione e log in. PHP 2
I Parte di una registrazione con ajax Javascript 1
I sostituzione registrazione PHP 1
I registrazione (SESSION) PHP 5

Discussioni simili