Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    Controllo che non funziona

    Buon pomeriggio,ho fatto questo controllo, ma non mi riesce di farlo funzionare,
    cioè, funziona finchè, non inserisco il controllo sul mittente cioè questo
    $trovaCarattere = array('|','!','£','$','%','&','/','(',')','=','?','^',
    '[',']','+','*','§','°','#','ç','@','-',':','.',',',';');

    foreach($trovaCarattere as $ricerca) {
    if(($posCarattere = strpos($mittente, $ricerca)) !== false){
    echo $posCarattere;
    }
    }
    elseif($posCarattere===false){
    echo("<center>


    <font face=verdana color=red size=-1>
    Errore inserimento Mittente!ATTENZIONE ai caratteri speciali!

    Hai inserito inavvertitamente questo/i carattere/i $mittente");
    }

    se usato da solo funziona che è una meraviglia, ma se inserito all'interno di altri controlli
    non mi funziona, sapreste dirmi il perchè?

    Questo è il controllo completo:
    <?
    $mittente = trim(addslashes($_POST["mittente"]));
    $email = trim(addslashes($_POST["email"]));
    $messaggio = trim(addslashes($_POST["messaggio"]));
    $ora_ins_mex = $data_odierna->GetOraOdierna($miaOra);
    $data_ins_mex = $data_odierna->GetDataOdierna($mioGiorno);

    $trovaCarattere = '@';
    $cercaIn = $email;
    $posizioneCarattere = strpos($cercaIn, $trovaCarattere);

    $trovaCarattere = array('|','!','£','$','%','&','/','(',')','=','?','^',
    '[',']','+','*','§','°','#','ç','@','-',':','.',',',';');
    foreach($trovaCarattere as $ricerca) {
    if(($posCarattere = strpos($mittente, $ricerca)) !== false){
    echo $posCarattere;
    }
    }
    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>");
    }
    elseif($posCarattere===false){
    echo("<center>


    <font face=verdana color=red size=-1>
    Errore inserimento Mittente!ATTENZIONE ai caratteri speciali!

    Hai inserito inavvertitamente questo/i carattere/i $mittente");
    }
    elseif($mittente!="" and $email!="" and $messaggio!=""){
    $Insert = mysql_query("Insert into guestbook(mittente,email,messaggio,ora_ins_mex,dat a_ins_mex)
    values('$mittente','$email','$messaggio','$ora_ins _mex','$data_ins_mex')")
    or die ("Non riesco ad Inserire i dati della Insert". $Insert . mysql_error());

    echo("

    <center><hr>
    " .
    "<font face=verdana color=blue size=2>La tua IMPRONTA è stata inserita!</font>");
    }
    $Fconn = $Rconn->db_close($chiudi_db) or die("Impossibile chiudere la connessione verso il DB");
    ?>

    Come devo fare?

  2. #2
    Consiglio: controlla i caratteri inseriri utilizzando le regular expression.

    http://freephp.html.it/articoli/view_articolo.asp?id=69
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    96
    con le regular expression puoi fare così:
    $mail = "mail@sito.it";
    if(eregi("^([a-z0-9\._-]+)(@[a-z0-9\.-_]+)(\.{1}[a-z]{2,6})$", "<a href=\"mailto:\\1\\2\\3\">\\1\\2\\3</a>", $mail));
    ti controlla se esiste una parte della stringa che sia fatta così:
    abc@def.gh, e che può contenere "." "_" "-" all'interno, altrimenti restituisce FALSE.
    Se vuoi costruirne una "su misura" per le tue esigenze fammi pure sapere...

  4. #4
    grazie ragazzi.. adesso mi attivo e vi faccio sapere...
    intanto ho scaricato il tutorial che mi avete postato...

    ari- grazzzzie

  5. #5
    è un po complicato... sapreste darmi una mano, sul come risolvere il MIO problema?

    Intanto continuo nella comprenzione di cosa vuol dire questo script:
    if(eregi("^([a-z0-9\._-]+)(@[a-z0-9\.-_]+)(\.{1}[a-z]{2,6})$",trim($mittente)))

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    96
    funziona che verifica se in $mittente c'è una stringa che:
    inizia con lettere, cifre, punto, underscore o trattino, seguiti da @
    e di nuovo lettere, cifre, punto, underscore o trattino finché non trova un punto, seguito da un numero da minimo due e massimo sei lettere (a-z).
    Tu cosa cerchi esattamento?

  7. #7
    in pratica vorrei che mi controllasse la stringa, sia se $mittente inizia, finisce con uno dei caratteri speciali, ma anche se li contiene nel mezzo... cosi "ch(ita%r£a" (chitarra) capisci?

    E poi non voglio che mi faccia la replace dei caratteri speciali, voglio soltanto che verifichi la loro esistenza e mi blocchi la Insert che dovrò fare...

    ti posto nuovamente il controllo
    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>");
    }

    elseif{
    //qui inserire la gestione dei caratteri speciali per il mittente
    }
    elseif($mittente!="" and $email!="" and $messaggio!=""){
    $Insert = mysql_query("Insert into guestbook(mittente,email,messaggio,ora_i
    ns_mex,data_ins_mex)
    values('$mittente','$email','$messaggio'
    ,'$ora_ins_mex','$data_ins_mex')")
    or die ("Non riesco ad Inserire i dati della Insert". $Insert . mysql_error());

    echo("

    <center><hr>
    " .
    "<font face=verdana color=blue size=2>La tua IMPRONTA è stata inserita!</font>");
    }
    $Fconn = $Rconn->db_close($chiudi_db) or die("Impossibile chiudere la connessione verso il DB");
    ?>

    Questo è il controllo che ho , però manca la gestione del mittente sotto quel punto di vista...
    Sapresti cortesemente darmi una mano?
    Grazie mille....

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    96
    Allora, questo è quanto ti serve per controllare se in $mittente sono presenti (in qualunque poszione) i caratteri che avevi elencato nell'array :

    <?php
    if(preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-:\.,;]/i",$mittente)){
    echo "sì";
    }
    else {
    echo "no";
    }
    ?>

    questo ti rende solo un BOOLEANO, poi fai quelloo che ti serve

  9. #9
    si funziona ti ringrazio...

    però non capisco come mai se faccio + controlli mi restituisce sempre il primo e cioè:

    if(preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-\.,;]/i",$mittente) ||
    preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-:\.,;]/i",$messaggio)){
    echo "Se uno O l'altro";
    }
    elseif(preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-:\.,;]/i",$mittente) and
    preg_match("/[§ç!°£$%&\|\/\(\)\=\?\^\[\]\+\*#-:\.,;]/i",$messaggio)){
    echo "Se uno E l'altro";
    }
    else{
    echo "nessuno dei due";
    }

    nel primo è con or ||
    nel secondo con and &&

    come mai mi restituisce sempre il primo controllo,anche se nelle 2 input inserisco volontariamente gli errori?

    Non so se mi sono spiegato...

  10. #10
    Non devi mettere per forza &&?
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.