in che senso scusa? nel primo caso ti controlla che ci sia nell'uno o nell'altro, il secondo se in entrambi. Ma ti uscirà sempre il primo perché almeno in uno dei due lo troaverà...
in che senso scusa? nel primo caso ti controlla che ci sia nell'uno o nell'altro, il secondo se in entrambi. Ma ti uscirà sempre il primo perché almeno in uno dei due lo troaverà...
piuttosto fai
if(preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-\.,;]/i",$mittente) and
preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-:\.,;]/i",$messaggio)){
echo "Se uno E l'altro";
}
elseif(preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-:\.,;]/i",$mittente) or
preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-:\.,;]/i",$messaggio)){
echo "Se uno O l'altro";
}
else{
echo "nessuno dei due";
}
se cambi l'ordine di controllo dovrebbe funzionare...![]()
vi ringrazio, si cambiando l'ordine funziona, però perdonatemi.. ma se ho solo questo controllo funziona benissimo,se integrato con quello postato all'inizio non funziona.
Se controllo con preg_match il mittente e basta.. funziona tutto ma,
se voglio controllare sia il mittente che l'email,per es, ed
inserisco i dati giusti mi restituisce sempre l'errore del controllo con preg_match... sto diventando scemo...
questo è il controllo con implementato preg_match:
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="trovaCarattere.php" method="post" target="_self">
<table border=0 width="465" height="200">
<tr>
<td width="100%" height="10%" align="center">
<font face="Verdana, Arial, Helvetica, sans-serif" size="+1" color=black>
Imprimi la tua orma sul nostro GUESTBOOK
</font>
</td>
</tr>
<tr>
<td width="100%" height="60%" align="center">
<font face="Arial, Helvetica, sans-serif" size="-2" color=black>[b]
* Mittente: <input type="text" name="mittente" maxlength="16" size="15">
* Email: <input type="text" name="email" maxlength="40" size="39">
* Messaggio: <input type="text" name="messaggio" maxlength="16" size="15">
<input type="reset" name="pulisci" value="Reimposta">
<input type="Submit" name="invia" value="Invia">
</td>
</tr>
</table>
<?php
$mittente = trim($_POST["mittente"]);
$email = trim($_POST["email"]);
$messaggio = trim($_POST["messaggio"]);
echo "Mittente: " . $mittente . "
Email: " . $email . "
" .
"
Messaggio: " . $messaggio . "
";
$trovaCarattere = '@';
$cercaIn = $email;
$posizioneCarattere = strpos($cercaIn, $trovaCarattere);
if($mittente=="" and $email=="" and $messaggio==""){
echo("<center>
<font face=verdana color=red size=3>Devi Riempire tutti i campi con l'asterisco!
</font></center>");
}
elseif($mittente=="" || $email=="" || $messaggio==""){
echo("<center>
<font face=verdana color=red size=3>Hai dimenticato di riempire uno o più campi con l'asterisco!
</font></center>");
}
//gestione @ per Email
elseif ($posizioneCarattere === false) {
echo("<center>
<font face=verdana color=red size=3>Errore inserimento E-mail!Hai dimenticato la @ ATTENZIONE!
</font></center>");
}
//gestione mittente
elseif(preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-:\.,;]/i",$mittente)
|| preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-:\.,;]/i",$email)){
echo("<center>
<font face=verdana color=red size=2>
Errore inserimento Mittente oppure Email!
Non è consentito inserire caratteri speciali $mittente - $email
Devi correggere l'errore se vuoi continuare!GRAZIE!!!
</font></center>");
}
else{
echo("
<center><hr>
" .
"<font face=verdana color=blue size=2>La tua IMPRONTA è stata inserita!</font>");
}
?>
</form>
</body>
</html>
questa è il controllo completo... fatemi capire perchè non funziona..
per favore...![]()
Grazie mille... per la pazienza![]()
non mi chiedere perché ma nel preg_match il ":" mettilo in fondo...
ovvero:
("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-,;: ]/i",$mittente)
prova un po' ora...
ah, dimenticavo, oltre il cambiamento di sopra ricordati di eliminare il controllo sul punto, altrimenti ti becca quello del dominio... (come già fatto nel preg_match di sopra).
Se vuoi controllare il punto, dovresti controllare se ce n'è più d'uno, prima del preg_match, come hai fatto per "@".
riguardo il punto usa:
$mittente = //l'indirizzo;
if (substr_count($mittente, ".")>1){
echo "solo un punto...";
}
else{
if(preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#- ,:;]/i",$mittente)) {
echo "sì";
}
else {
echo "no";
}
}
ti ringrazio davvero molto... ho individuato il motivo perchè con il preg_match i controlli su $mittente ed $email non funzionano..
E' colpa del contenuto della mail cioè della @.
Ho cambiato controllo togliendo $email e mettendo $messaggio, in pratica controllavo $mittente e/o $messaggio, bene,non ho riscontrato errori e funziona tutto alla perfezione...
Però, mi farebbe comodo il controllo su $email, ma il problema non lo riesco a capire.. perchè con questo preg_match,
preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#- ,:;]/i",$email), non controllo se c'è la @, allora come mai non funziona?
E' incredibile...![]()
![]()
scusami, non o capito cos'è che non va questa volta...
Facciamo il punto della situazione: postami l'ultima "release" del tuo script che gli diamo un'ultima occhiata.
ecco l'ultima:
$mittente = trim($_POST["mittente"]);
$email = trim($_POST["email"]);
$messaggio = trim(addslashes($_POST["messaggio"]));
$trovaCarattere = '@';
$cercaIn = $email;
$posizioneCarattere = strpos($cercaIn, $trovaCarattere);
if($mittente=="" and $email=="" and $messaggio==""){
echo("<center>
<font face=verdana color=red size=3>Devi Riempire tutti i campi con l'asterisco!
</font></center>");
}
elseif($mittente=="" || $email=="" || $messaggio==""){
echo("<center>
<font face=verdana color=red size=3>Hai dimenticato di riempire uno o più campi con l'asterisco!
</font></center>");
}
//gestione @ per Email
elseif ($posizioneCarattere === false) {
echo("<center>
<font face=verdana color=red size=3>Errore inserimento E-mail!Hai dimenticato la @ ATTENZIONE!
</font></center>");
}
//gestione mittente
elseif(preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-\.,;:]/i",$mittente)
&& preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-\.,;:]/i",$email)){
echo("<center>
<font face=verdana color=red size=2>
Errore inserimento Mittente ed Email!
Non è consentito inserire caratteri speciali $mittente - $email
Devi correggere l'errore se vuoi continuare!GRAZIE!!!
</font></center>");
}
elseif(preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-\.,;:]/i",$mittente)
|| preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-\.,;:]/i",$email)){
echo("<center>
<font face=verdana color=red size=2>
Errore inserimento Mittente o Email!
Non è consentito inserire caratteri speciali $mittente - $email
Devi correggere l'errore se vuoi continuare!GRAZIE!!!
</font></center>");
}
elseif(strtolower($mittente) && strtolower($email) && strtolower($messaggio)){
echo("<center>
<font face=verdana color=red size=3>
Hai digitato tutti i dati in MAIUSCOLO!
$mittente - $email - $messaggio
Correggi scrivendo in minuscolo!GRAZIE!!!
</font></center>");
}
elseif(strtolower($mittente) || strtolower($email) || strtolower($messaggio)){
echo("<center>
<font face=verdana color=red size=3>
Hai digitato uno dei dati in MAIUSCOLO!
$mittente - $email - $messaggio
Correggi scrivendo in minuscolo!GRAZIE!!!
</font></center>");
}
else{
echo("
<center><hr>
" .
"<font face=verdana color=blue size=2>La tua IMPRONTA è stata inserita!</font>");
}
In pratica, dove c'è il controllo con il preg_match su $mittente e $email, accade che, anche se inserisco i dati giusti, mi restituisce sempre un'errore.
Non dovrebbe essere cosi, perchè se ho inserito i valori senza caratteri speciali, non dovrei avere problemi, giusto?
Se invece tolgo il controllo su $email, ma lo faccio su $messaggio, non mi da problemi.
La mia ipotesi è che, l'indirizzo email avendo al suo interno la @, può interpretarlo come (giustamente) carattere speciale, però all'interno del preg_match io non controllo la @.
Allora come mai mi restituisce sempre errore?E' questo quello che vorrei capire e che non riesco a fare..![]()
![]()
Ari-grazie...![]()
come ti ho già detto, hai inserito il controllo sul punto nel preg_match. ovvio che te lo becca : "mail@tin.it", c'è un punto...
Copia e incolla lo script corretto, vedrai che funziona.
Non dovrebbero esserci più errori. Ovviamente metti a posto l'output nel caso trovi due punti nel'email (elseif indicato in rosso), e togli il punto dal preg_match della $email.
mittente = trim($_POST["mittente"]);
$email = trim($_POST["email"]);
$messaggio = trim(addslashes($_POST["messaggio"]));
$trovaCarattere = '@';
$cercaIn = $email;
$posizioneCarattere = strpos($cercaIn, $trovaCarattere);
if($mittente=="" and $email=="" and $messaggio==""){
echo("<center>
<font face=verdana color=red size=3>Devi Riempire tutti i campi con l'asterisco!
</font></center>");
}
elseif($mittente=="" || $email=="" || $messaggio==""){
echo("<center>
<font face=verdana color=red size=3>Hai dimenticato di riempire uno o più campi con l'asterisco!
</font></center>");
}
//gestione @ per Email
elseif ($posizioneCarattere === false) {
echo("<center>
<font face=verdana color=red size=3>Errore inserimento E-mail!Hai dimenticato la @ ATTENZIONE!
</font></center>");
}
//gestione mittente
elseif (substr_count($email, ".")>1){
echo "solo un punto...";
}
elseif(preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-\.,;:]/i",$mittente)
&& preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-,;:]/i",$email)){
echo("<center>
<font face=verdana color=red size=2>
Errore inserimento Mittente ed Email!
Non è consentito inserire caratteri speciali $mittente - $email
Devi correggere l'errore se vuoi continuare!GRAZIE!!!
</font></center>");
}
elseif(preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-\.,;:]/i",$mittente)
|| preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-,;:]/i",$email)){
echo("<center>
<font face=verdana color=red size=2>
Errore inserimento Mittente o Email!
Non è consentito inserire caratteri speciali $mittente - $email
Devi correggere l'errore se vuoi continuare!GRAZIE!!!
</font></center>");
}
elseif(strtolower($mittente) && strtolower($email) && strtolower($messaggio)){
echo("<center>
<font face=verdana color=red size=3>
Hai digitato tutti i dati in MAIUSCOLO!
$mittente - $email - $messaggio
Correggi scrivendo in minuscolo!GRAZIE!!!
</font></center>");
}
elseif(strtolower($mittente) || strtolower($email) || strtolower($messaggio)){
echo("<center>
<font face=verdana color=red size=3>
Hai digitato uno dei dati in MAIUSCOLO!
$mittente - $email - $messaggio
Correggi scrivendo in minuscolo!GRAZIE!!!
</font></center>");
}
else{
echo("
<center><hr>
" .
"<font face=verdana color=blue size=2>La tua IMPRONTA è stata inserita!</font>");
}
![]()
c'hai ragione.. scusami se ti ho fatto perder tempo dietro questa cavolata... che stupido che sono stato... a forza de capocciate![]()
![]()
Ok grazie mille per questo grandissimo aiuto...![]()