Ho un form e sto cercando uno script che con un'alert blocca le parole proibite inserite nei campi
Ho un form e sto cercando uno script che con un'alert blocca le parole proibite inserite nei campi
Solo js? penso ti sia più facile con php, ti basterebbe fare un controllo sui dati inseriti, del tipo:Originalmente inviato da photoman
ciaoCodice PHP:
<?php
if($_POST['nomecampo']=="parolaproibita1" OR $_POST['nomecampo']=="parolaproibita2" ecc...) {
echo "<script type='text/Javascript>
alert('Errore');
</script>";
exit();
}
else {
?>
//tutto il codice
<?php
}
?>
Ce l'ho già in php, vorrei metterlo anche in js in modo che fa uscire subito l'alertOriginalmente inviato da NetSkin
Posta lo script...Originalmente inviato da photoman
Non è molto difficile, devi usare questa funzione e fare una piccola modifica al form:Stammi bene...Codice HTML:<script type="text/javascript"> function pre_submit () { var testo = document.nome_modulo.nome_textarea.value; var badword_list = new Array ('bw1', 'bw2', 'bw3', ...); // qui tutte le bad-word for (var i = 0; i < badword_list.length; i++) { if (testo.indexOf (badword_list[i]) >= 0) { alert ('Badword inserita: ' + badword_list[i]); return false; } } return true; } </script> ... <form name="nome_modulo" action="invia.php" onsubmit="pre_submit()"> ... <textarea name="nome_textarea"> Inserisci qui il testo da inviare... </textarea> ... </form>
Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?
When you don't know your next step... improvise
ALTERVISTA WANTS YOU!
Vuoi diventare moderatore su AlterVista? Scopri come...
Devo provarlo però gia che ci siamo, io avevo visto un sito con un codice php che però faceva uscire subito l'alert senza nemmeno inviare i dati, questo sarebbe l'ideale perchè userei il solo codice php.Originalmente inviato da dementialsite
Questo è il codice che ho però blocca dopo l'invio e rimanda l'utente al form:
Codice PHP:
//parole proibite (vedi guestbook/parole-proibite.php)
$stringa = $_POST['messaggio'].' '.$nome.' '.$suoemail.' '.$citta;
foreach($parole_proibite as $parola){
if (stristr($stringa, $parola) !== false){
$errore .= "La parola $parola non è ammessa";
}
}
if ($errore):
$tab_ins;
$meta="<META http-equiv=\"REFRESH\" content=\"2; url=http://www.miosito.it/form.php\">";
else:
$tab_ins .= "GRAZIE ".$nome." MESSAGGIO INVIATO!";
Ultima modifica di photoman : 09-07-2007 alle ore 18.20.53
Il codice php viene eseguito sul server e poi il server restituisce l'output...
I dati vengono immessi lato client quindi è impossibile (oppure esiste un metodo che io non conosco) che uno script php ti restituisce un alert senza inviare i dati...
Un modo ci sarebbe, ma si basa sempre sull'invio di dati: Ajax...
Spero di essere stato chiaro...
Ciao
Allora dimmi se si può fare una cosa del genere:Originalmente inviato da giuseppeiemma
il codice che ho postato prima prende le parole proibite da un'array che si trova in un'altro file.php
Si può creare uno script che "pesca" le parole da questo array e che fa uscire subito l'alert?Codice PHP:
<?
$parole_proibite = array ("pera","mela","ananas");
?>
In linea di principio si potrebbe fare così:
CiaoCodice PHP:
<?
if (parola_pescata==true){
echo "<script type=\"text/javascript\">";
echo "alert (\"Ho pescato una parola non permessa. Ricompila il modulo\");";
echo "</script>";
}
?>
Scusa, non vedo il richiamo all'array $parole-proibiteOriginalmente inviato da giuseppeiemma
emh..non vorrei appesantire i già tanti script postati, ma leggendo le parole javascript, campo, filtro e alert a me mi viene da dirti questo:
File js:
Form Input:Codice:function controlla() { var stringa = document.modulo.testo.value; if (stringa.indexOf("a") != (-1)) { alert("Il carattere 'a' non è consentito"); document.modulo.testo.value = stringa.substring(0,(stringa.length - 1)); } }
Per intenderci, ogni qual volta qualcuno scriverà (nel nostro caso) la lettera a all'interno dell'input un alert appare indicando l'errore, e la lettera viene cancellata .. tutto ciò senza dover inviare il form.Codice:<form name="modulo"><input type="text" name="testo" onKeyUp="controlla()"></form>
Saluti
Ultima modifica di KeeperArt : 09-07-2007 alle ore 19.14.26
oppureCodice PHP:
foreach($parole_proibite as $parola){
if (stristr($stringa, $parola) !== false){
$parola_pescata = true;
break;
}
}
Magari dai uno sguardo qui: http://php.html.it/guide/leggi/99/guida-php-di-base/ ti rivedi cicli e arrayCodice PHP:
foreach($parole_proibite as $parola){
if (stristr($stringa, $parola) !== false){
echo "<script type=\"text/javascript\">";
echo "alert (\"Ho pescato una parola non permessa. Ricompila il modulo\");";
echo "</script>";
break;
}
}
Ciao
C'è l'ho già un codice simile, il mio non cancella la lerrera ma illumina di rosso il campo, prova ad inserire la barra inversa in un campo e clicca invia http://www.photoman.altervista.org/guestbook/form.phpOriginalmente inviato da KeeperArt
EDIT:
Io ce l'ho cosi, si tratta di inserirci dentro l'array php se possibile, oppure crearne uno js:
if((f.nome.value.indexOf("<")||(">")||("\\") != -1)){
f.nome.style.backgroundColor='red'
alert("I caratteri < > \\ non sono ammessi");
f.nome.focus();
return false;
}
...
Ultima modifica di seneca : 09-07-2007 alle ore 20.29.55
Dovrebbe bastarti modificare la funzione controlla in questo modo:
Codice:function controlla() { var parole = new Array("parola1","parola2","parola3"); var stringa = document.modulo.testo.value; for(i=0;i<parole.length;i++) if (stringa.indexOf(parole[i]) != (-1)) { alert("La parola '"+parole[i]+"' non è consentita"); break; } }
Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
«Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen
Ho provato a inserirlo ma da errore, il codice iniziale che ho è questo:Originalmente inviato da funcool
Codice:function controlla1(){ var f = document.mioform1; //.value == "" rende il campo obbligatorio if(f.nome.value == ""){ f.nome.style.backgroundColor='#e2e2e2' alert("Inserire il Nome"); f.nome.focus(); return false; } if((f.nome.value.indexOf("<") != -1) || (f.nome.value.indexOf(">") != -1) || (f.nome.value.indexOf("\\") != -1)){ f.nome.style.backgroundColor='red' alert("I caratteri < > \\ non sono ammessi"); f.nome.focus(); return false; } ...
Hai provato a inserire solo il corpo della funzione controlla() segnalata da funcool (che poi non è molto diversa dalla mia sopra...) sostituendo il break; con return false;?
Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?
When you don't know your next step... improvise
ALTERVISTA WANTS YOU!
Vuoi diventare moderatore su AlterVista? Scopri come...
Si cosi funziona, ho pero 2 domande:Originalmente inviato da dementialsite
1. è possibile sostituire l'array sotto con il mio php che contiene le parole?
2. il codice sotto devo applicarlo ad ogni campo o si può usarne uno per tutti quelli che mi interessano?
Codice:function controlla1(){ var f = document.mioform1; var parole = new Array("mela","pera","ananas"); var stringa = document.mioform1.nome.value; for(i=0;i<parole.length;i++) if (stringa.indexOf(parole[i]) != (-1)){ alert("La parola '"+parole[i]+"' non è consentita"); return false; } //.value == "" rende il campo obbligatorio if(f.nome.value == ""){ f.nome.style.backgroundColor='#e2e2e2' alert("Inserire il Nome"); f.nome.focus(); return false; } if((f.nome.value.indexOf("<") != -1) || (f.nome.value.indexOf(">") != -1) || (f.nome.value.indexOf("\\") != -1)){ f.nome.style.backgroundColor='red' alert("I caratteri < > \\ non sono ammessi"); f.nome.focus(); return false; }
Puoi far stampare a video al PHP il codice per creare l'array in JavaScript.Originalmente inviato da photoman
Puoi usarlo per più campi, magari mandandogli come parametro il campo.Originalmente inviato da photoman
Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
«Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen
Spiegami: non ho capito il primo punto , come faccio ad usarlo per ogni campo, che modifica ci faccio?Originalmente inviato da funcool
Prova così (dovrebbe crearti dall'array $parole in PHP l'array parole in JavaScript):
Codice PHP:
var parole=new Array(<?php
for($i=0;$i<count($parole)-1;$i++)
echo "'{$parole[$i]}',";
echo "'{$parole[count($parole)-1]}'";
?>);
Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
«Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen
Ho messo cosi mi da errore di sintassi, la pagina dove c'è l'array è parole-proibite.php, l'array è $parole_proibiteOriginalmente inviato da funcool
Codice:function controlla1(){ var f = document.mioform1; var parole=new Array(<?php for($i=0;$i<count($parole_proibite)-1;$i++) echo "'{$parole[$i]}',"; echo "'{$parole[count($parole)-1]}'"; ?>); var stringa = document.mioform1.nome.value; for(i=0;i<parole.length;i++) if (stringa.indexOf(parole[i]) != (-1)){ f.nome.style.backgroundColor='red' alert("La parola '"+parole[i]+"' non è ammessa"); return false; }
In tutti i punti dove c'è $parole devi mettere $parole_proibite.
Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
«Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen
Fatto, ma mi da errore di sintassi su questa riga:Originalmente inviato da funcool
Codice PHP:
echo "'{$parole_proibite[$i]}'";
Codice PHP:
<form name="mioform1" onsubmit="javascript:controlla1();" action="" method="POST">
<input type="text" name="nome"><input type="submit">
</form>
<?
$parole_proibite=array("jhgj","Jhgjh","hjghjg");
?>
<script type="text/javascript">
function controlla1(){
var f = document.mioform1;
var parole=new Array(<?php
for($i=0;$i<count($parole_proibite)-1;$i++)
echo "'{$parole_proibite[$i]}',";
echo "'{$parole_proibite[count($parole_proibite)-1]}'";
?>);
var stringa = document.mioform1.nome.value;
for(i=0;i<parole.length;i++)
if (stringa.indexOf(parole[i]) != (-1)){
f.nome.style.backgroundColor='red'
alert("La parola '"+parole[i]+"' non è ammessa");
return false;
}}
</script>
Continua a dare errore di sintassi...però, senti: ho elaborato il codice sotto è funzionante e trova la parola singolare e plurale però la regExp c'e l'ho solo qui in js.Originalmente inviato da probid
Che dici di crearla in php e richiamarla qui nel nuovo codice? Non è più semplice?
Codice:function controlla1(){ var f = document.mioform1; var parole = new RegExp("\\b(mel(a|e)|per(a|e))\\b"); var stringa = document.mioform1.nome.value; if(stringa.match(parole) && stringa.match(parole)[0]){ f.nome.style.backgroundColor='red' alert("La parola '"+stringa.match(parole)[0]+"' non è ammessa"); return false; }
Che errore ti da??Continua a dare errore di sintassi...
Perchè io l'ho provato e a me funziona perfettamente...
magari prima di stendere un nuovo script prova a postare PER INTERO quello che continua a darti errore così possiamo sistemarlo
L'ho messo nel file script.js cosi errore di sintassi nella riga rossa:Originalmente inviato da probid
<?
$parole_proibite=array("jhgj","Jhgjh","hjghjg");
?>
function controlla1(){
var f = document.mioform1;
var parole=new Array(<?php
for($i=0;$i<count($parole_proibite)-1;$i++)
echo "'{$parole_proibite[$i]}',";
echo "'{$parole_proibite[count($parole_proibite)-1]}'";
?>);
var stringa = document.mioform1.nome.value;
for(i=0;i<parole.length;i++)
if (stringa.indexOf(parole[i]) != (-1)){
f.nome.style.backgroundColor='red'
alert("La parola '"+parole[i]+"' non è ammessa");
return false;
}}
Non puoi mettere lo script js in un file con estensione .js perchè anche il codice js contiene una porzione di php.
Quindi devi mettere tutto nello stesso file come ti ho indicato nel post 24.
Ora da errore di sintassi qui:Originalmente inviato da probid
function controlla1(){
var f = document.mioform1;
var parole=new Array(<?php
for($i=0;$i<count($parole_proibite)-1;$i++) echo "'{$parole_proibite[$i]}',";
echo "'{$parole_proibite[count($parole_proibite)-1]}'";
?>);
var stringa = document.mioform1.nome.value;
for(i=0;i<parole.length;i++)
if (stringa.indexOf(parole[i]) != (-1)){
f.nome.style.backgroundColor='red'
alert("La parola '"+parole[i]+"' non è ammessa");
return false;
}
}
Ti ho già chiesto prima che errore ti desse,ma non hai risposto.
Non è molto facile riuscire ad aiutarti in questo modo...