Formail complesso

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Salve ragazzi sto tentando di creare il mio primo formail serio in html/php.
Non riesco però a capire come fare per controllare i campi di iscrizione, ovvero so benissimo che bisogna usare le espressioni regolari e le ho programmate ma non ho ben capito il concetto.
Devo inserire le espressioni regolari in php nell'html o nel file php dove invio i dati?
Inoltre come faccio a creare le stringhe dinamiche accanto ad ogni campo che indichino
se è giusto o sbagliato?

Posto il codice sviluppato sino ad ora con relative espressioni regolari.

FORM HTML

<form method="post" action="./iscrizione.php" enctype="multipart/form-data">
<form method=get action="../getUrl.php">
<span>User: </span><input name="user_utente" type="text" size="25" value="" /><br/>
<span>Password: </span><input name="password_utente" type="text" size="25" value="" /><br/>
<span>Nome: </span><input name="nome" type="text" size="25" value="" /><br/>
<span>Cognome: </span><input name="cognome" type="text" size="25" value="" /><br/>
<span>Indirizzo: </span><input name="indirizzo" type="text" size="25" value="" /><br/>
<span>Pronvincia: </span><input name="provincia" type="text" size="25" value="" /><br/>
<span>Cap: </span><input name="cap" type="text" size="25" value="" /><br/>
<span>Telefono: </span><input name="telefono" type="text" size="25" value="" /><br/>
<span>Cell: </span><input name="cell" type="text" size="25" value="" /><br/>
<span>Fax: </span><input name="fax" type="text" size="25" value="" /><br/>
<span>E.mail: </span><input name="mail" type="text" size="25" value="" /><br/>
<span>Codice Fiscale: </span><input name="codice_fiscale" type="text" size="25" value="" /><br/>
<span>Partita Iva: </span><input name="partita_iva" type="text" size="25" value="" /><br/>
<span>Domanda Segreta:</span></td><td>
<select name="Seleziona la domanda">
<option selected>Seleziona la domanda</option>
<option >Qual'è il nome da nubile di tua madre?</option>
<option>Qual'è il nome della tua prima isnegnanta?</option>
<option>Qual'è il tuo film preferito?</option>
<option>Qual'è il nome del tuo cane?</option>
</select><br/>
<span>Risposta Segreta: </span><input name="risposta_segreta" type="text" size="25" value="" /><br/>
<span>Autorizza Consenso: </span><input name="autorizza" type="checkbox" size="25" value="" />
<br/><br/>
<input type="submit"value="Iscriviti"class="invia">
</form>


INVIO DATI PHP

<?php
require_once("config.inc.php");
$User_utente=$_POST['user_utente'];
$Password_utente=$_POST['password_utente'];
$Nome=$_POST['nome'];
$Cognome=$_POST['cognome'];
$Indirizzo=$_POST['indirizzo'];
$Citta=$_POST['luogo'];
$Provincia=$_POST['provincia'];
$Cap=$_POST['cap'];
$Telefono=$_POST['telefono'];
$Fax=$_POST['fax'];
$Cell=$_POST['cell'];
$Mail=$_POST['mail'];
$Codice_fiscale=$_POST['codice_fiscale'];
$Partita_iva=$_POST['partita_iva'];

$dialogo="risposta=".$dialogo;

if(ereg("^[+@+()+(+)+°a-zA-Z]+([a-zA-Z0-9+@+()+(+)+°]){3,}",$User_utente)){
echo "User valido ";
}else{
echo "User non valido";
}

if(ereg("^[a-zA-Z]+([a-zA-Z0-9]){5,8}",$Password_utente)){
echo "Password valido";
}else{
echo "Password non valido";
}

if(ereg("^[a-zA-Z]{3,}",$Nome)){
echo "Nome valido";
}else{
echo "Nome non valido";
}

if(ereg("^[a-zA-Z]|([']){3,8}",$Cognome)){
echo "Cognome valido";
}else{
echo "Cognome non valido";
}

if(ereg("[a-zA-Z0-9]|([']){5,8}",$Indirizzo)){
echo "Indirizzo valido";
}else{
echo "Indirizzo non valido";
}

if(ereg("^[a-zA-Z]|([']){3,8}",$Citta)){
echo "Citta valida";
}else{
echo "Citta non valida";
}

if(ereg("^[a-zA-Z]{2,}",$Provincia)){
echo "Provincia valida";
}else{
echo "Provincia non valida";
}

if(ereg("^[0-9]{5,5}",$Cap)){
echo "Cap valido";
}else{
echo "Cap non valida";
}

if(ereg("^[0-9]{10,10}",$Telefono)){
echo "Telefono valido";
}else{
echo "Telefono non valida";
}

if(ereg("^[0-9]{10,10}",$Fax)){
echo "Fax valido";
}else{
echo "Fax non valida";
}

if(ereg("^[0-9]{10,10}",$Cell)){
echo "Cell valido";
}else{
echo "Cell non valida";
}

if(ereg("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})",$Mail)){
echo "Indirizzo mail valido";
}else{
echo "Indirizzo mail non valido";
}

if(ereg("^[a-zA-Z0-9]{16,16}",$Codice_fiscale)){
echo "Codice Fiscale valido";
}else{
echo "Codice Fiscale non valido";
}

if(ereg("^[0-9]{11,11}",$Partita_iva)){
echo "partita iva valida";
}else{
echo "Partita iva non valida";
}

$query = "INSERT INTO iscritti (user_utente, password_utente, nome, cognome,indirizzo, luogo, provincia,cap,telefono,fax,cell,mail,codice_fiscale,partita_iva) VALUES ('$User_utente','$Password_utente','$Nome', '$Cognome','$Indirizzo ', '$Citta', '$Provincia', '$Cap', '$Telefono', '$Fax' , '$Cell', '$Mail','$Codice_fiscale','Partita_iva')";

if (mysql_query($query, $db)){
$risposta='Dati scritti';
/*echo "risposta=".$risposta; */
$to = $Mail;
$subject = "Registrazione Portale sito";
$USER="\n User :";
$PASSWORD="\n Password :";
$MAIL="\n E.mail :";
$server="FlepStudio";
$messaggio = $messaggio;
$messaggio .= "\n La tua registrazione e' stata completata con successo!
\n Ti ringraziamo per essersi registrato
\n tI ricordiamo i dati della sua registrazione:";
$messaggio .= "\n\n-------------------------------------\n";
$messaggio .= "\n E.mail inviata da: www.sito.it
$USER $User_utente
$PASSWORD $Password_utente
$MAIL $Mail ";
$headers = "From: ".$server ." <" .$Mail.">\n";

if(@mail($to, $subject, $messaggio, $headers)){

header("Location:http://www.sito.com/FormIscritti/ic.html");

}else{
}

}else{

$risposta2='dati non scritti';
/*echo "risposta=".$risposta2;*/

}


?>
 

dreamer86

Utente Attivo
15 Apr 2011
42
0
0
rafalmachalek.it
Salve ragazzi sto tentando di creare il mio primo formail serio in html/php.
Non riesco però a capire come fare per controllare i campi di iscrizione, ovvero so benissimo che bisogna usare le espressioni regolari e le ho programmate ma non ho ben capito il concetto.
Devo inserire le espressioni regolari in php nell'html o nel file php dove invio i dati?
Il controllo con le espressioni regolari dovrebbe essere effettuato quando ricevi i dati. Puoi inviarli allo stesso file oppure creare un file apposta dove invii i dati ed è li dove devi fare controllo.

PHP:
<form method="post" action="./iscrizione.php" enctype="multipart/form-data">
<form method=get action="../getUrl.php">
Scusa, ma non ho ben capito in quelle circostanze il concetto di due form annidati.
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ciao Dreamer86, grazie per la risposta si, in che senso due form annidati?
i controlli li ho messi nel file iscrizione.php con il codice che ho postato relativo alla dicitura INVIO DATI PHP.
La cosa che non mi è chiara è come faccio a mostrare all'utente che si registra se sta scrivendo il dato correttamente o meno con una stringa dinamica accanto al dato stesso?
esempio lui scrive User: Carlo90 e accanto appare nome utente corretto!
mentre se non scrive nulla accanto appare inserire nome utente!.
Questo non mi è chiaro come concetto in php.
Dovrebbe esserci una stringa dinamica accanto alla stringa imput e questa stringa dovrebbe ricevere l'echo del file php che dice appunto giusto o sbagliato in base alle espressioni regolari giusto? il problema è che non so come si crea questo dialogo.
 

dreamer86

Utente Attivo
15 Apr 2011
42
0
0
rafalmachalek.it
Per avere questo effetto devi appoggiarsi a javascript. Php non ti può aiutare per avere le stringhe dinamice come vuoi tu semplicemente per il fatto che viene svolto lato server e non lato client.

Al riguardo dei due form, hai aperto due tag form, uno con metodo post altro con metodo get. A parte che hai chiuso solo un form, non ho capito anche a cosa serve form inviato in modalità get nel tuo caso.
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ciao, serve ad inviarmi i dati al file iscrizione.php ma a questo punto dopo la tua titubanza credo sia superfluo. :)
Quindi civorrebbe javascript e come è fatto quindi un classico form in php?
scansione i dati inviati con le espressioni regolari e poi semplicemente se sono sbagliati fa un refresh della pagina indicandoti quali sono sbagliati?
 

dreamer86

Utente Attivo
15 Apr 2011
42
0
0
rafalmachalek.it
Php può agire sui dati soltando sul lato server quindi soltando dopo che utente ha schiacciato il bottone sul form e ha inviato i dati. Con javascript hai la possibilità che mentre utente riempie un campo viene visualizzato un apposito messaggio perché javascript viene svolto nel browser del utente quindi può agire sui dati prima che quelli sono stati inviati sul server.

Se non vuoi utilizzare javascript il massimo che puoi fare con php e lasciare che utente invia i dati al server, fare controllo e riproporrere la pagina del form segnalando errori ritrovati.
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ho provato una cosetta tipo questa:

<script language="javascript">
<!--
function Esempio() {
var miaVariabile = document.Form.nome.value;
if (miaVariabile == "") {
document.write("compilare il campo");
}else {
document.write(miaVariabile);
}
}
//-->
</script>

<form name="Form">
Inserisci un testo a tuo piacere
<input type="text" name="nome">
<input type="button" value="Prova" onClick="Esempio()">
</form>
però così ti manda ad un altro campo non bisogna comunque associre una stringa dinamica?
 
Ultima modifica:

dreamer86

Utente Attivo
15 Apr 2011
42
0
0
rafalmachalek.it
Voglio usare javascript dove trovo un tutorial che mi indica la via?
Purtroppo non saprei dirti dove puoi trovare un tutorial giusto per il tuo caso.

Comunque, con document.write() stai riscrivendo il codice della pagina e tutto quello che c'era prima viene buttato via. Dovresti aggiungere dinamicamente un elemento html contenente la stringa desiderata oppure aggire su un elemento già esistente per modificare il suo contenuto.
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Sto provando a fare in questo modo sembra funzioni mbhoo staremo a vedere poi
con il php cosa succede.

<script language="javascript">
<!--
function Verifica() {

var user="Inserire User";
var reg_ef="Registrazione Effettuata";
var controllo_user=/^[+@+()+(+)+°a-zA-Z]+([a-zA-Z0-9+@+()+(+)+°]){3,}$/;
var user_utente = document.Form.user.value;

if (!controllo_user.test(user_utente)){
document.Form.er.value=user;
}else{
document.Form.er.value=reg_ef;
}

}
//-->
</script>

<form name="Form">
User:
<input type="text" name="user">
<input type="text" name="er"><br/>
<input type="button" value="Prova" onClick="Verifica()">
</form>
 

dreamer86

Utente Attivo
15 Apr 2011
42
0
0
rafalmachalek.it
Fatto cosi si assomiglia al funzionamento con il php. Mio consiglio sarebbe, giocare un po con gli eventi onfocus e onblur dei campi input e non con l'evento onclick sul bottone. Cosi messaggio di errore arriverebbe prima che utente cerca di inviare il form.
 

Discussioni simili