Ciao,
ho risolto con il codice di PaTeR (grazie
$nome_pulito = preg_replace('#\040{2,}#', ' ', $nome);
è bastato cancellare il secondo \040 ed inserire uno spazio vuoto è tutto ha funzionato
grazie mille
Buona giornata
Ciao,
ho risolto con il codice di PaTeR (grazie
$nome_pulito = preg_replace('#\040{2,}#', ' ', $nome);
è bastato cancellare il secondo \040 ed inserire uno spazio vuoto è tutto ha funzionato
grazie mille
Buona giornata
Ciao a tutti
problema risolto grazie a margheritebianche
grazie mille
Buona giornata
Ho un problema di difficile, forse, impossibile soluzione
Vorrei passare i valori della variabile nome_azienda in una seconda pagina
con il metodo GET
se si tratta di nomi normali il tutto funziona a meraviglia
ma se nel nome da passare compare & non riesco più a recuperare il valore
perchè tale simbolo viene usato per unire più coppie nome/valore
e di fatto il valore inserito viene troncato subito prima che compare &
perchè interpretato come coppia di valori e non singolo valore
il fatto è che nei nomi di aziende si è soliti trovare il simbolo &
secondo voi è possibile trovare una soluzione
il metodo POST si usa solo per il Form o è possibile
usarlo anche in questo singolo caso. e se si come?
Buona serata
@PaTeR said:
Scusa, come al solito ho dimenticato i delimitatori... Li dimentico sempre
modifica così il codice:
$b = preg_replace('#\040{2,}#', '\040', $a);
$a è il tuo testo. $b è il testo risultante.
Niente scuse PaTeR.........
solo grazie per la disponibilità
mi spiace deluderti ma purtroppo non và
sono stato attento a copiarlo per bene ma proprio non funziona
$nome_pulito = preg_replace('#\040{2,}#', '\040', $nome);
la soluzione è più ardua di quanto pensassi
Ciao
Ciao,
e grazie per l'interessamento a quelli che hanno postato (PaTeR, CZero, piccolosocrate)
purtroppo i suggerimenti non hanno dato frutti
[LEFT]quello di piccolosocrate funziona benissimo
ma serve a sostituire solo il doppio spazio con uno solo[/LEFT]
[LEFT]non sò se c'è un modo per rendere la funzione più generale
[LEFT]per spazi >= a 2[/LEFT]
[LEFT]ho provato a modificarla con[/LEFT]
[LEFT]str_replace('\040{2,}','\040',$testo_da_parsare);[/LEFT]
ma nulla di nulla, non funziona
che dite, si può modificare???
[/LEFT]
il codice complicatissimo di PaTeR in teoria dovrebbe andare ma
anche questo non funziona
se ho capito bene la funzione** preg_replace**
esegue una ricerca ed una sostituzione con le espressioni regolari
preg_replace (espressione_regolare, sostituto, testo)
La funzione ricerca in testo i criteri impostati in espressione_regolare.
e li sostituisce con sostituto.
\040
è modo per indicare uno spazio
{2,}
dovrebbe significare
che quanto scritto prima si ripete da 2 volte ad infinito
quindi, il tutto dovrebbe significare cerca all'interno di $testo_da_parsare gli spazi bianchi ripetuti 2 o più volte e sostituiscili con 1 solo spazio bianco
purtoppo non va
ho fatto dei tentativi e ho provato anche a sostituire \040 con \40
in quanto avevo letto che sono equivalenti.... ma nulla è cambiato
ho provato anche a sostituire i doppi apici " " con quelli singoli ' '
dopo aver visto il suggerimento di piccolosocrate,
ma mi rida l'errore
qualcun'altro ha suggerimenti?
Un saluto
@CZero said:
Non mi ricordo e non posso provare ora, ma credo che puoi risolvere facendo:
$testo_pulito = implode(" ", explode(" ",$testo_da_pulire));
Ciao e grazie per la risposta,
No... purtroppo non va
il valore del campo lo ripulisco in questo modo prima del confronto:
$nome = ltrim(rtrim(strip_tags($_POST['nome'])));
dietro tuo consiglio ho poi messo
$nome_pulito = implode(" ", explode(" ",$nome));
ma il risultato non cambia.... gli spazi bianchi intermedi restituiscono sempre valori diversi e non confrontabili
Qualcuno si è trovato in questa situazione e sa come fare?
Ho un problema che si verifica quando il form viene compliato una seconda volta e in uno dei campi si inseriscono le stesse parole ma staccate da un numero diverso di spazi bianchi intermedi.
Per evitare che il form sia compilato due volte con stessi dati, prima di inserire un nuovo record nella tabella si esegue un controllo.
Faccio una verifica se il valore introdotto nel campo è già presente nel database. Se già inserito, rimando a pagina di errore. Se non presente si inserisce un nuovo record.
PROBLEMA
Quando si complia il campo di un form e con la barra spaziatrice si inseriscono tra le parole 2 o più spazi bianchi, il valore del campo risulta diverso, e di conseguenza si aggiunge un nuovo record nella tabella, cosa che non dovrebbe accadere....
Faccio un esempio pratico, se nel campo si inseriscono i valori:
Pizzeria Bellavista (separate da 1 spazio bianco)
Pizzeria Bellavista (separate da 2 spazi bianchi)
Pizzeria Bellavista (separate da 3 spazi bianchi)
Pizzeria Bellavista (separate da 4 spazi bianchi)
questi sono considerati diversi e vengono aggiunti nella tabella
io vorrei che fossero considerati tutti uguali e non diversi e lo spazio bianco interno fosse ridotto ad 1 solo
Per prevenire simili errori in fase di data entry si è soliti usare le funzioni ltrim e rtrim ma queste eliminano solo gli spazi bianchi all'inizio ed alla fine
Mi chiedevo se esiste una funzione analoga che riduce gli spazi bianchi intermedi ad 1 solo spazio togliendo tutti quelli superflui
Esiste?
Un saluto
Grazie margheritebianche,
ho utilizzato la funzione urlencode ed ho risolto il problema alla grande
Un saluto
Salve,
ho il seguente problema e mi chiedevo se esiste una soluzione
si tratta di spedire nella mail di attivazione account un link che rimanda ad altra pagina in cui si esegue un UPDATE e si aggiorna il valore di un campo
fin qui è chiaro
il problema è nel link che arriva nella mail
http://nomedominio.it/attiva.php?user=$user&id=$id
dove ho posto
$user = $_POST['nome'];
se il valore del campo nome è intero e formato da una sola parola
non ci sono problemi es: Gianluca
se invece è formato da 2 parole es: Gian Luca
il link che arriva viene spezzato e, di fatto, non funziona
questo è quello che arriva:
http://nomedominio.it/attiva.php?user=Gian Luca&id=10
c'è un modo affinchè questo non avvenga ed ottenere un valore del tipo
Gian_Luca e quindi un link non spezzato del tipo
http://nomedominio.it/attiva.php?user=Gian_Luca&id=10
Un saluto
Finalmente sono riuscito a trovare una soluzione
era piuttosto semplice
ma quel link che mi avevi dato claudioweb mi è servito a poco, se non a confondermi le idee
ecco la soluzione:
in onsubmit si deve richiamare una sola funzione
nel mio caso onsubmit="verify()"
all'interno poi della funzione usata si fa un piccolo richiamo all'altra
dicendo prima del return true
if (altrafunzione()==false)
{ return false;}
Spero di aver portato un piccolo contributo e di essere di aiuto a chi ha o avrà un problema simile al mio
Ringrazio claudioweb per l'interesse e la disponibilità
Un saluto
Ciao,
non ho ben capito come e dove inserire
document.form1.submit();
inserendolo semplicemente nel codice javascript mi da errore
dicendo che 'document.form1' è nullo o non è un oggetto
ho fatto diverse prove ma non capisco dove sbaglio
si deve creare una nuova funzione del tipo:
function submitform()
{
document.form1.submit();
}
ho provato ma non funziona
oppure unirlo alla function controllo() o altro ancora?
come modificare il codice HTML poi, se questo va modificato?
Un saluto
Salve,
riprendo un problema emerso in una discussione chiusa
Ho avuto questo problema: non riuscivo a capire come racchiudere in onsubmit 2 funzioni di controllo del modulo prima di inviarlo
la prima per controllare se risultavano inseriti i valori nei campi
la seconda per evitare l'invio del form più volte da stesso utente
claudioweb mi ha suggerito di concatenare le 2 funzioni con un'altra
del tipo:
<script type="text/javascript" language="javascript">
<!--
function controllo()
{
verify();
validate(form1);
}
//-->
</script>
e poi all'interno del modulo
<form method=post action=pagina.php name=form1 onsubmit="controllo()">
ho fatto come indicato, ho provato ma succede questo:
raggiunto il limite di invio posto ad esempio a 2 (ma vale anche se diverso da 2) succede che dopo aver cliccato su "INVIA" l'alert dei cookie si attiva e, dopo aver chiuso il box alert, il form viene inviato ugualmente e finisco nella pagina php dove è inserito il codice per l'invio mail e i ringraziamenti
ho fatto una piccola modifica nella funzione validate() per il controllo dei cookie inserendo dopo l'alert("Form già inoltrato, non è possibile inviarlo nuovamente.")
{form_registra.action='graziegiàfatto.php';
}
return false
}
e ho risolto il problema, form non più inviato se si è raggiunto il limite e indirizzamento verso altra pagina
resta però un grosso problema legato alla prima funzione della verifica preventiva dei campi
se ad esempio un campo è vuoto, e clicco su "INVIA" si attiva il box alert
ma chiudendolo, invece di restare sulla stessa pagina e avere la possibilità di riempirlo come accadeva prima
vengo subito indirizzato nella pagina php dove è inserito il codice per l'invio mail e i ringraziamenti
praticamente la verify() non funziona come dovrebbe
ecco un esempio pratico con solo un paio di campi
è un pò lunghetto:
<script language="JavaScript">
function verify() {
var d;
d = document.forms[0];
if (d.nome_azienda.value == '')
{
alert('Inserisci il nome della tua azienda');
return false;
}
if (d.via.value == '')
{
alert('inserisci la via');
return false;
}
if (d.autorizzo.checked)
{
}
else
{
alert('accosenti al trattamento dei tuoi dati');
return false;
}
return true;
}
var maxSubmits = 5
function validate(frm)
{
var totalSubmits = eval(GetCookie('TotalSubmissions'))
if (totalSubmits == null)
totalSubmits = 0
if (totalSubmits >= maxSubmits)
{
alert("Form già inoltrato, non è possibile inviarlo nuovamente.")
{form1.action='grazie.php';
}
return false
}
else
{
totalSubmits = totalSubmits + 1
BakeIt(totalSubmits, "TotalSubmissions")
return true
}
}
function ResetCounter()
{
BakeIt(0, "TotalSubmissions")
}
function BakeIt(cookieData, cookieName)
{
var days = 999;
var expires = new Date ();
expires.setTime(expires.getTime() + days * (24 * 60 * 60 * 1000));
SetCookie(cookieName, cookieData, expires);
}
function SetCookie(cookieName, cookieData, expireDate)
{
document.cookie = cookieName + "=" + escape(cookieData) + "; expires=" + expireDate.toGMTString();
}
function GetCookie(name)
{
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return GetCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
function GetCookieVal (offset)
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function controllo()
{
verify();
validate();
}
</SCRIPT>
<html>
<body>
<table width="640" border="0" cellspacing="0" cellpadding="0">
<form method=post action=fine.php name=form1 onsubmit="return controllo()">
<tr>
<td width="315" align="left" valign="top" class="testoSX">
<font face="Arial" size="2">
<br>
</font>
<table width="315" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="20" colspan="2" align="left" valign="top" class="testo">
</td>
</tr>
<tr>
<td width="165" class="testo">
<font face="Arial" size="2">Nome azienda</font></td>
<td width="150" class="testo"><font face="Arial"><input name="nome_azienda" type="text" class="noteInput" size="25"></font></td>
</tr>
<tr bgcolor="#F8F8F8">
<td width="165" bgcolor="#FFFFFF" class="testo">
<font face="Arial" size="2">Via</font></td>
<td width="150" class="testo" bgcolor="#FFFFFF"><font face="Arial"><input name="via" type="text" class="noteInput" size="25"><font size="2">
</font></font>
</td>
</tr>
</table>
<p>
<font face="Arial" size="2">
<br> </font> </p>
<table width="315" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#F8F8F8">
<td valign="middle" class="testo" bgcolor="#FFFFFF"><font face="Arial"><input name="autorizzo" type="checkbox" value="1" checked></font></td>
<td class="testo" bgcolor="#FFFFFF"><font face="Arial" size="2">Autorizzo il trattamento e la comunicazione
dei dati.</font></td>
</tr>
</table>
<p>
<font face="Arial" size="2">
<br> </font> </p>
<p align="center">
<font face="Arial">
<input name="submit" type=submit class="testoSmall" value=prosegui><font size="2">
</font></font>
</p> </td>
</tr>
</table>
</body>
</html>
come risolvere questo problema?
Un saluto
Claudioweb: usa il tag [code], altrimenti si capisce poco, grazie
Ciao EmmeBar,
si sarei interessato e seguirò, non appena possibile, il tuo consiglio sul nuovo Thread in PHP, grazie mille e buona giornata
claudioweb, ho fatto come mi hai indicato:
concatenare le 2 funzioni con un'altra funzione
ma ho un problema irrisolto con HTML e le 2 funzioni JavaScript nel onsubmit
posso contiunuare su questo Thread o devo aprirene un'altro???
fatemi sapere
Un saluto
Ciao,
mi interessava capire come fare con gli IP, qualcuno sa come fare???
comunque...
riguardo al sistema dei cookie vorrei segnalare un'altro script
http://javascript.html.it/script/vedi/248/impedire-invio-multiplo/
risulta più completo rispetto all'altro
usandolo ho un grosso problema con il codice HTML
nel Form avevo già inserito JavaScript per la verifica preventiva del modulo prima di inviarlo ed avevo inserito onsubmit="return verify()"
ora se inserisco anche il controllo dei cookie onsubmit="return validate(this) non saprei come legare le due verifiche
ho provato a scrivere così:
<form method=post action=pagina.php name=form1 onsubmit="return verify(); return validate(this)">
la prima verifica viene fatta mentre la seconda (quella dei cookie) no
come si deve scrivere?
Riapro questa vecchia discussione in quanto ho lo stesso problema
Qualcuno può indirizzarmi verso questo script se esiste....
o eventualmente dirmi come fare per limitare l'invio multiplo del form da stesso IP?
Un saluto
Ho provato e funziona benissimo
grazie a CZero per aver trovato l'errore
e grazie a margheritebianche per la spiegazione e l'esempio pratico
Buona giornata
@CZero said:
non devi fare un echo della variabile... basta che fai:
$stringa = 'blablabla'.$altravariabile.'blablabla';
Ciao,
da neofità e perfetto "ignorante" in materia....
non ho capito nulla
in pratica
come si compone questa stringa
e dove devo metterla
comunque grazie per la risposta
e .... per l'eventuale aiuto
@margheritebianche said:
Quello che hai scritto è corretto, dovresti allargare un po' il punto di vista così vediamo se c'è qualche errore prima, o di concetto.
grazie per l'interessamento
allora
questo è il codice:
<?php
$receiverMail = "[EMAIL="[email protected]"][email protected][/EMAIL]";
$subject = "TEST";
$name = "Form";
$nome_azienda = ltrim(rtrim(strip_tags($_POST['nome_azienda'])));
$via = ltrim(rtrim(strip_tags($_POST['via'])));
$tel = ltrim(rtrim(strip_tags($_POST['tel'])));
$settore = ltrim(rtrim(strip_tags($_POST['settore'])));
$msgbody = '
<html>
<head>
<title>Dati TEST</title>
</head>
<body bgcolor="#F8F8F8">
<table width="564" height="139" cellspacing="0" cellpadding="0" style="border-collapse: collapse" bordercolor="#111111">
<tr>
<th width="558" height="24" bgcolor="#333333">
<p align="left"><font face="Arial" color="#F8F8F8">TEST</font></th>
</tr>
<tr>
<th width="358" height="1" bgcolor="#F3F3F3"></th>
</tr>
<tr>
<td width="546" height="8"></td>
</tr>
<tr>
<td width="546" height="18"><font face="Arial" size="2" color="#5D5D5D">Nome
azienda: "<?php echo $nome_azienda?>"</font></td>
</tr>
<tr>
<td width="546" height="18"><font face="Arial" size="2" color="#5D5D5D">Via: "<?php echo $via; ?>"</font></td>
</tr>
<tr>
<td width="546" height="18"><font face="Arial" size="2" color="#5D5D5D">
Telefono: "<?php echo $tel; ?>"</font></td>
</tr>
<tr>
<td width="546" height="18"><font face="Arial" size="2" color="#5D5D5D">
Settore: "<?php echo $settore; ?>"</font></td>
</tr>
</table>
</body>
</html>
';
$intestazioni = "MIME-Version: 1.0\r\n";
$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
// invio del messaggio
mail($receiverMail, $subject, $msgbody, $intestazioni, "From: $name");
?>
Nella mia casella postale arriva regolarmente il messaggio
formattato come avevo richiesto
ma non vengono restituiti valori dei campi del form (variabili php)
il testo della mail che arriva è questo:
[LEFT]TEST[/LEFT]
Nome azienda: ""
Via: ""
Telefono: ""
Settore: ""
Salve a tutti,
premetto che di HTML e PHP non capisco nulla
ma avendo un buon intuito sono riusciuto a inviare i dati di un Form via email, se in formato testo è tutto OK
se trasformo la mail in formato HTML mi arriva in HTML come lo formattata io ma i valori delle variabili PHP utilizzate non riesco più a visualizzarle
sicuramente è un errore di scrittura ma non so proprio come risolverlo
Ad esempio:
all'interno del messaggio, laddove dovrebbe apparire il valore della variabile php
nel codice HTML è scritto:
<tr>
<td width="546" height="18"><font face="Arial" color="#5D5D5D" size="2">Nominativo: "<?php echo $nome; ?>"</font></td>
</tr>
Quando la mail mi arriva
visualizzo solo
Nominativo ""
perdendo così il valore della variabile
Come dovrei scrivere???
Grazie a chi vorrà rispondermi
Buona serata