Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Problemino form in php

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

Problemino form in php

Postdi Paolo87 » 26/02/08 16:08

Hello!!! ho creato un form di convalida in php.Questo script un po lunghetto è molto faciel da capire,esso si occupa di controllare che tutti i campi dle form siano stati inseriti e din particolar modo controlla se la email inserita rispetta la classica forma. Il mio problema è il seguente,inserire il codice captcha che ho appena preso da internet ed inserirlo nel form in php e farlo controllare dallo script se è stato riempito o meno. Vi posto prima il codice del form e poi quello del codice captcha.

Script in php del form :
Codice: Seleziona tutto
<?php
define("_destinatario","p.fiorelli87@virgilio.it");
define("errore_oggetto_predefinito","Non hai inserito un oggetto!");
define("errore_nome_predefinito","Non hai inserito il tuo nome!");
define("errore_email_predefinito","L'indirizzo email che hai inserito non è corretto!");
define("segnaposto_oggetto","Inserisci un oggetto");
define("segnaposto_nome","Inserisci il tuo nome");
define("segnaposto_email","Inserisci la tua email");
 function generaModulo($oggetto=segnaposto_oggetto,$nome=segnaposto_nome,$email=segnaposto_email,$errore_oggetto="",$errore_nome="",$errore_email=""){
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset>
<legend>Modulo … i campi contrassegnati con * sono obbligatori</legend>
<label for="oggetto">Oggetto</label>
<br />
<input name="oggetto" id="oggetto" value="<?php echo $oggetto; ?>" size="30" />
<?php if (!$errore_oggetto=="") { echo"<span><strong>$errore_oggetto</strong></span>";} else { echo"<span>*</span>";}?>
<br />
<br />
<label for="nome">Nome</label>
<br />
<input name="nome" id="nome" value="<?php echo $nome; ?>" size="30" />
<?php if (!$errore_nome=="") { echo"<span><strong>$errore_nome</strong></span>";} else { echo"<span>*</span>";}?>
<br />
<br />
<label for="mail">La tua e-mail</label>
<br />
<input name="email" id="mail" value="<?php echo $email; ?>" size="30" />
<?php if (!$errore_email=="") { echo"<span><strong>$errore_email</strong></span>";} else { echo"<span>*</span>";}?>
<br />
<br />
<input type="submit" value="Invia il modulo" name="bottone_invio" />
</fieldset>
</form>
<?php
} function isValidEmail($email){
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email)){
return true;
}
else {
return false;
}
}

function controlla($stringa,$lunghezza){
if (strlen($stringa)<$lunghezza){
return true;
}
else {
return false;
}
}
?>
</head>
<body>
<?php if (!isset($_POST['bottone_invio'])) {
generaModulo();
} else {
$oggetto = isset($_POST['oggetto']) ? $_POST['oggetto'] : "";
$nome = isset($_POST['nome']) ? $_POST['nome'] : "";
$email = isset($_POST['email']) ? $_POST['email'] : "";
 $error = false;
$errore_oggetto = '';
$errore_nome = '';
$errore_email = '';
if (controlla($oggetto,1) or ($oggetto==segnaposto_oggetto)) {
$error = true;
$errore_oggetto = errore_oggetto_predefinito;
}
if ((controlla($nome,1)) or ($nome==segnaposto_nome)) {
$error = true;
$errore_nome = errore_nome_predefinito;
}
if (!isValidEmail($email)){
$error = true;
$errore_email = errore_email_predefinito;

}
if ($error){
generaModulo($oggetto,$nome,$email,$errore_oggetto,$errore_nome,$errore_email);
}
else {
?>
<p>
Hai inserito i seguenti dati:<br />
Oggetto: <?php echo $oggetto ?>
<br />
Nome: <?php echo $nome ?>
<br />
Email: <?php echo $email ?>
<br />
</p>
<?php

mail(_destinatario,"contatto dal sito - $oggetto","Nome: $nome Oggetto: $oggetto nEmail: $email","From:$email");
echo"<p>Grazie per aver inviato il messaggio</p>";?>
<?php } }

?>
</body>
</html>


Script in php del codice captcha :
Codice: Seleziona tutto
<?php
session_start();
function fakeCaptcha($seed,$length)
{
    $max = strlen($seed);
   $random = getRandom($length,$max);
   $captcha = "";
   $string = "";
     for($i=0;$i<$max;$i++)
   {
      if(in_array($i,$random))
      {   
         $captcha .=   $seed[$i];
         $string .= "<span style=\"color:red\">".$seed[$i]."</span>";
      }
      else
      {
          $string .= $seed[$i];
      }
     }
   return array($captcha,$string);
}
function getRandom($length,$max)
{
    $array = range(0, $max);
    shuffle($array);
    $array = array_slice($array, 0, $length);
    return $array;
}
?>
<?php
if(!isset($_SESSION['captcha']))
{
   $captcha = fakeCaptcha(md5(time()),5);
   $_SESSION['captcha'] = $captcha[0];
   $_SESSION['string'] = $captcha[1];
}
if(isset($_POST['captcha']))
{
   if($_POST['captcha']==$_SESSION['captcha'])
   {
      echo "Il Codice è esatto";
   }
   else
   {
      echo "Spiacente il codice inserito è sbagliato";
   }
}
?>
<p>Riempi la casella sottostante con le lettere rosse</p>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="frm">
<p><?php echo $_SESSION['string']; ?></p>
<input name="captcha" type="text" value="" maxlength="5"><br />
<input name="test" type="submit" value="Test">
</form>


Spero sia stato chiaro nella mia esposizione. Grazie a tutti coloro che mi aiuteranno ;) 8)
Paolo87
Utente Senior
 
Post: 305
Iscritto il: 26/08/07 09:54
Località: Roma

Sponsor
 

Torna a Programmazione


Topic correlati a "Problemino form in php":


Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti