Problema strano ordini sito e-commerce

Salve a tutti.

Il cliente, esercente dell'attività, mi ha contattato perché ha ricevuto degli ordini dove non erano specificati dei dati obbligatori, quindi soggetti ad adeguati controlli.

Il problema non me la spiego e non so da dove rifarmi per arrivare alla soluzione.

Potrebbe essere un attacco? Se sì, come potrebbero aver fatto a evitare i controlli sulle variabili?

Grazie in anticipo!

inviato 5 anni fa
Schiappa
X 0 X

Ho trovato un bug: se metto nei campi solo uno spazio mi crea l'ordine nel database senza associarne un utente, ma la mail dell'ordine non me la spedisce....Nel mio caso è arrivata una mail con il carrello corretto, ma senza i dati dell'utente; altra cosa strana è che nell'intestazione della mail c'è

----- Original Message -----

From: cognomeUtente nomeUtente

To: ordini@sito.it

Sent: Tuesday, May 03, 2011 11:39 AM

Subject: Richiesta ordine dal sito

il campo "From" contiene nome e cognome di chi ha effettuato l'ordine, dati che rappresentano(nel campo in questione) un alias che ha come riferimento la mail dell'acquirente:ovvero se ci lascio il cursore del mause sopra mi viene scritta la mail reale e se clicco mi fa rispondere....

Spero di esser stato abbastanza chiaro....

risposto 5 anni fa
Schiappa
X 0 X

Schiappa stai chiedendo aiuto su uno script di cui non conosciamo nulla. Io non ho la sfera magica!

risposto 5 anni fa
Mario Santagiuliana
X 0 X

Questa è la pagina che vede l'utente che deve confermare l'ordine e inserire i propri dati:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="JS/jquery.1.3.2.js"></script>
<script type="text/javascript">
function totaloneA(subTotale)
{
   
 var totale = $("#totalone").html();
 totale = parseFloat(totale);
 
 if(totale=subTotale+25){
   totale = totale + 20 - 25;
   $("#totalone").html(totale);
 }

}
function totaloneB(subTotale)
{
 var totale = $("#totalone").html();
 totale = parseFloat(totale);
 if(totale=subTotale+20){
   totale = totale -20 + 25;
   $("#totalone").html(totale);
 }
}
</script>

<?php $pagina = ""; ?>
<?php include("INC_header.php"); ?>   
<?php include("INC_menu.php"); ?>
<?php include("CONNESSIONE"); ?>

<?php
   $idOrdine=$_GET['idOrdine'];
   $idCategoria=$_GET['idCategoria'];
?>

<img src="images/top_vetrina-negozio.jpg" />
<div id="contenuto">
   <h1><img src="images/icona_conferma.png" width="22" height="22" style="margin-right:5px" /> Proposta d'ordine N. <?php echo $idOrdine; ?></h1>
   <br /> 
   <table width="910" border="0" cellspacing="0" cellpadding="3">
      <tr>
          <td width="61%"><span class="titoletto">Nome Articolo</span></td>
          <td width="12%" align="right"><span class="titoletto">Prezzo unitario</span></td>
          <td width="10%" align="right"><span class="titoletto">Quantit&Aacute;</span></td>
          <td width="17%" align="right"><span class="titoletto">Prezzo Totale</span></td>
       </tr>

       <?php   
         $query="SELECT * FROM acquisto where idOrdine=".$idOrdine;
         $result1 = mysql_query($query,$db);
         $num_rows = mysql_num_rows($result1);
         
         $query="SELECT prodotto.* FROM acquisto INNER JOIN prodotto on acquisto.idProdotto=prodotto.idProdotto where acquisto.idOrdine=".$idOrdine;
         $result2 = mysql_query($query,$db);
            
         $subTotale=0;
            
          for($i=0;$i<$num_rows;$i++){  
            mysql_data_seek ($result1, $i);
            $acquisti = mysql_fetch_array($result1);
            
            mysql_data_seek ($result2, $i);
            $prodotti = mysql_fetch_array($result2);  
            
            $totale[$i]=$prodotti[4]*$acquisti[3];
        ?>
       <tr>
         <td class="bodo-sotto"><?php echo $prodotti[1]." (".$prodotti[6]." Kg)" ?></td>
         <td class="bodo-sotto" align="right"><?php echo $prodotti[4]; ?> &euro;</td>
         <td class="bodo-sotto" align="right"><?php echo $acquisti[3]; ?></td>
         <td align="right" class="bodo-sotto"><?php echo $totale[$i]; ?> &euro;</td>
       </tr> 
       <?php
         $subTotale=$subTotale+$totale[$i];
          };
       ?>
       <tr>
         <td colspan="4" valign="bottom" align="right">  
         <span class="titoletto"><br />Subtotale:</span> <strong><?php echo $subTotale; ?> &euro;</strong><br />Iva inclusa</td>
       </tr>
    </table>
    <!-- fine carrello -->
   
    <!--h2 style="font-weight:normal"><strong>Risparmia tempo! <a href="registrati.php">Registrati adesso</a></strong> per non dover inserire i tuoi dati ogni volta!<br />
    Sei già nostro cliente? Clicca qui per fare il log-in... </h2-->
    <h1>&nbsp;</h1>
    <br />
    
    <form id="registrationForm" action="INSERIMENTODATI.php?idOrdine=<?php echo $idOrdine; ?>&categoria=<?php echo $categoria; ?>&totalone=<?php echo $subTotale; ?>" method="post">
       
      <table width="910" border="0" cellspacing="0" cellpadding="3">
          <tr>
             <td width="" valign="top"><h2>Pagamento:</h2>
                <input type="radio" name="pagamento" id="radio" value="fattura"  <?php if(isset($_GET['pagamento']) && $_GET['pagamento']=='fattura'){ echo "checked"; }; ?> />
                Fattura<br />
                <input type="radio" name="pagamento" id="radio" value="ricevuta fiscale"  <?php if(!isset($_GET['pagamento']) || $_GET['pagamento']=='ricevuta fiscale'){ echo "checked"; }; ?> />
                Ricevuta fiscale
               
               <p>Il pagamento viene effettuato in contrassegno.</p>
            </td>
             <td width="31">
               
            </td>
             <td width="" valign="top">
                <h2>Spedizione:</h2>
               <input name="zonaspedizione" type="radio" id="radio" onclick="totaloneA(<?php echo $subTotale; ?>)" value="zonaA" checked="checked"  <?php if(!isset($_GET['zonaspedizione']) || (isset($_GET['zonaspedizione']) && $_GET['zonaspedizione']=='zonaA')){ echo "checked"; }; ?> />
      <strong>Zona A</strong> <em>20.00 &euro;</em> (tutta Italia esclusa Calabria, Sicilia e Sardegna)<br />
                <input type="radio" name="zonaspedizione" id="radio" value="zonaB" onclick="totaloneB(<?php echo $subTotale; ?>)"  <?php if(isset($_GET['zonaspedizione']) && $_GET['zonaspedizione']=='zonaB'){ echo "checked"; }; ?> />
                <strong>Zona B</strong> <em>25.00 &euro;</em> (Calabria, Sicilia e Sardegna)
          </td>
          </tr>
       </table>
      
      <h1>&nbsp;</h1>
       <br />      
      
      <table width="910" border="0" cellspacing="0" cellpadding="3">
          <tr>
             <td colspan="2"><h2>Inserisci i tuoi dati:</h2></td>
             <td>&nbsp;</td>
             <td colspan="2"><h2>Inserisci i dati per la spedizione:</h2></td>
          </tr>
          <tr>
             <td width="15%">Nome*</td>
             <td width="32%"><input type="text" name="nome" <?php if(isset($_GET['xnome']) || $_GET['xnome']=='Campo lasciato vuoto!'){ echo'class="errore-form"';};?> value="<?php if(isset($_GET['nome'])){ echo stripslashes($_GET['nome']); }; if(isset($_GET['xnome'])){$nome=$_GET['xnome']; echo $nome; };?>" tabindex="1" /></td>
             <td width="4%">&nbsp;</td>
             <td width="16%">Indirizzo*</td>
             <td width="33%"><input type="text" name="indirizzo" value="<?php if(isset($_GET['indirizzo'])){ echo stripslashes($_GET['indirizzo']); }; if(isset($_GET['xindirizzo'])){$indirizzo=$_GET['xindirizzo']; echo $indirizzo; };?>" tabindex="8" /></td>
          </tr>
          <tr>
             <td>Cognome*</td>
             <td><input type="text" name="cognome" <?php if(isset($_GET['xcognome'])){ echo'class="errore-form"';};?> value="<?php if(isset($_GET['cognome'])){ echo stripslashes($_GET['cognome']); }; if(isset($_GET['xcognome'])){$cognome=$_GET['xcognome']; echo $cognome; };?>" tabindex="2" /></td>
             <td>&nbsp;</td>
             <td>Citt&agrave;*</td>
             <td><input type="text" name="citta" value="<?php if(isset($_GET['citta'])){ echo stripslashes($_GET['citta']); }; if(isset($_GET['xcitta'])){$citta=$_GET['xcitta']; echo $citta; };?>" tabindex="9" /></td>
          </tr>
          <tr>
             <td>Telefono*</td>
             <td><input type="text" name="telefono" <?php if(isset($_GET['xtelefono'])){ echo'class="errore-form"';};?> value="<?php if(isset($_GET['telefono'])){ echo stripslashes($_GET['telefono']); }; if(isset($_GET['xtelefono'])){ echo $_GET['xtelefono']; };?>" tabindex="3" /></td>
             <td>&nbsp;</td>
             <td>Provincia*</td>
             <td><input name="provincia" type="text" size="6" value="<?php if(isset($_GET['provincia'])){ echo stripslashes($_GET['provincia']); }; if(isset($_GET['xprovincia'])){$provincia=$_GET['xprovincia']; echo $provincia; };?>" tabindex="11" />
             &nbsp;&nbsp;&nbsp;CAP
             <input name="cap" type="text" id="textfield5" size="6" value="<?php if(isset($_GET['cap'])){ echo stripslashes($_GET['cap']); };  if(isset($_GET['xcap'])){$cap=$_GET['xcap']; echo $cap; };?>" tabindex="12" /></td>
          </tr>
          <tr>
             <td>E-mail*</td>
             <td><input type="text" name="email" <?php if(isset($_GET['xemail'])){ echo'class="errore-form"';};?> value="<?php if(isset($_GET['email'])){ echo stripslashes($_GET['email']); }; if(isset($_GET['xemail'])){$email=$_GET['xemail']; echo $email; };?>" tabindex="4" /></td>
             <td>&nbsp;</td>
             <td>Nazione*</td>
             <td><input name="nazione" type="text" value="<?php if(isset($_GET['nazione'])){ echo stripslashes($_GET['nazione']); };?>" tabindex="13" /></td>
          </tr>
          <tr>
             <td>Ragione sociale</td>
             <td><input type="text" name="ragsociale" id="" value="<?php if(isset($_GET['ragsociale'])){ echo stripslashes($_GET['ragsociale']); };?>" tabindex="5" /></td>
             <td>&nbsp;</td>
             <td>&nbsp;</td>
             <td><?php if(isset($_GET['xprivacy'])){$privacy=$_GET['xprivacy']; echo '<p><font color="red">'.$privacy.'</font></p>'; };?>&nbsp;</td>
          </tr>
          <tr>
             <td>Cod. Fiscale</td>
             <td><input type="text" name="codfiscale" value="<?php if(isset($_GET['codfiscale'])){ echo stripslashes($_GET['codfiscale']); };?>" tabindex="6" /></td>
             <td>&nbsp;</td>
             <td>Privacy*</td>
             <td rowspan="2"><p><input name="privacy" type="checkbox" value="si" <?php if(!isset($_GET['xprivacy'])){ echo "checked"; }; ?> tabindex="14" /> 
              Dichiaro di accettare l'informativa sulla privacy ai sensi del Decreto legislativo 196/2003</p></td>
          </tr>
          <tr>
             <td>P. iva</td>
             <td><input type="text" name="piva" value="<?php if(isset($_GET['piva'])){ echo stripslashes($_GET['piva']); };?>" tabindex="7" /></td>
             <td>&nbsp;</td>
             <td>&nbsp;</td>
          </tr>
       </table>
      
      <span class="titoletto" style="color:#666666">NOTA: I campi con l'asterisco (*) sono obbligatori</span>
      
      
       
       <div style="float:right; margin-top:20px"><input type="submit" value="Invia proposta d'ordine"  class="call-to-action" /></div>
    </form>

   <h1>TOTALE ORDINE: <span id="totalone"><?php /*$totalone=$subTotale+19; echo $totalone;*/ echo $subTotale+20; ?> </span> &euro; iva inclusa<br /><br /></h1>   
    
</div><!-- fine di contenuto -->      
<?php include("INC_footer.php"); ?>   
risposto 5 anni fa
Schiappa
X 0 X

All' action della form risponde questo:

<?php
   ob_start();
   session_start();

        include("CONNESSIONE"); 


   $idOrdine=$_GET['idOrdine'];
   $idCategoria=$_GET['idCategoria'];

   $r[1]=stripslashes($_POST['nome']);
   $r[2]=stripslashes($_POST['cognome']);
   $r[3]=stripslashes($_POST['telefono']);
   $r[4]=stripslashes($_POST['email']);
   $r[5]=stripslashes($_POST['indirizzo']);
   $r[6]=stripslashes($_POST['citta']);
   $r[7]=stripslashes($_POST['provincia']);
   $r[8]=stripslashes($_POST['cap']);      
   $r[9]=stripslashes($_POST['nazione']);   
   
   $r[10]=$_POST['pagamento'];
   
   $r[11]=stripslashes($_POST['ragsociale']);
   $r[12]=stripslashes($_POST['codfiscale']);
   $r[13]=stripslashes($_POST['piva']);
   
   $r[14]=stripslashes($_POST['zonaspedizione']);
   
   
   
   $error='Campo lasciato vuoto!';

   if ($r[1]==NULL || $r[1]=="$error" || $r[2]==NULL || $r[2]=="$error" || $r[3]==NULL || $r[3]=="$error" || $r[4]==NULL || $r[4]=="$error" || $r[5]==NULL || $r[5]=="$error" || $r[6]==NULL || $r[6]=="$error" || $r[7]==NULL || $r[7]=="$error" || $r[8]==NULL || $r[8]=="$error" || $r[9]==NULL || $r[9]=="$error" || !isset($_POST['privacy']))
   {
      $targetUrl = "../conferma-ordine.php?idCategoria=$idCategoria&idOrdine=$idOrdine&pagamento=$r[10]&ragsociale=$r[11]&codfiscale=$r[12]&piva=$r[13]&zonaspedizione=$r[14]";
      if($r[1]==NULL){
         $errore[1]="Campo lasciato vuoto!";
         $targetUrl = $targetUrl.'&xnome='.$errore[1]; 
      }
      else{
         $targetUrl = $targetUrl.'&nome='.$r[1];
      };
       if($r[2]==NULL){
         $errore[2]="Campo lasciato vuoto!";
         $targetUrl = $targetUrl.'&xcognome='.$errore[2]; 
      }
      else{
         $targetUrl = $targetUrl.'&cognome='.$r[2];
      };
      if($r[3]==NULL){
         $errore[3]="Campo lasciato vuoto!";
         $targetUrl = $targetUrl.'&xtelefono='.$errore[3]; 
      }
      else{
         $targetUrl = $targetUrl.'&telefono='.$r[3];
      };
      if($r[4]==NULL){
         $errore[4]="Campo lasciato vuoto!";
         $targetUrl = $targetUrl.'&xemail='.$errore[4]; 
      }
      else{
         $targetUrl = $targetUrl.'&email='.$r[4];
      };
      if($r[5]==NULL){
         $errore[5]="Campo lasciato vuoto!";
         $targetUrl = $targetUrl.'&xindirizzo='.$errore[5]; 
      }
      else{
         $targetUrl = $targetUrl.'&indirizzo='.$r[5];
      };
      if($r[6]==NULL){
         $errore[6]="Campo lasciato vuoto!";
         $targetUrl = $targetUrl.'&xcitta='.$errore[6]; 
      }
      else{
         $targetUrl = $targetUrl.'&citta='.$r[6];
      };
      if($r[7]==NULL){
         $errore[7]="Campo lasciato vuoto!";
         $targetUrl = $targetUrl.'&xprovincia='.$errore[7]; 
      }
      else{
         $targetUrl = $targetUrl.'&provincia='.$r[7];
      };
      if($r[8]==NULL){
         $errore[8]="Campo lasciato vuoto!";
         $targetUrl = $targetUrl.'&xcap='.$errore[8]; 
      }
      else{
         $targetUrl = $targetUrl.'&cap='.$r[8];
      };
      if($r[9]==NULL){
         $errore[9]="Campo lasciato vuoto!";
         $targetUrl = $targetUrl.'&xnazione='.$errore[9]; 
      }
      else{
         $targetUrl = $targetUrl.'&nazione='.$r[9];
      };
      if(!isset($_POST['privacy'])){
         $errore[10]="Informativa sulla privacy non accettata!";
         $targetUrl = $targetUrl.'&xprivacy='.$errore[10]; 
      };
       header("Location: $targetUrl");
      
   }      
   else{
      $query="INSERT INTO `utente` ( `cognome` , `nome` , `telefono` , `email` , `indirizzo` , `citta` , `provincia`, `cap`, `nazione`, `ragioneSociale`, `codiceFiscale`, `partitaIva`  )
      VALUES ( '$r[2]' , '$r[1]', '$r[3]', '$r[4]', '$r[5]', '$r[6]' , '$r[7]', '$r[8]', '$r[9]', '$r[11]', '$r[12]', '$r[13]' )";
      $dbResult = mysql_query($query,$db);
      $idUtente=mysql_insert_id($db);
      
      $subTotale=$_GET['totalone'];
      /*
      if($_POST['spedizione']=='raccomandata'){
         $totalone=$subTotale+15;
      }elseif($_POST['spedizione']=='corriere'){
         $totalone=$subTotale+19;
      };
      */
      if($r[14]=='zonaA'){
         $totalone=$subTotale+20;
      };   
      if($r[14]=='zonaB'){
         $totalone=$subTotale+25;
      };   
      
      
      $query="UPDATE ordine SET pagamento = '$r[10]' , idUtente = $idUtente , totalone = $totalone, spedizione = '$r[14]'  WHERE idOrdine = $idOrdine ";
      $dbResult = mysql_query($query,$db);
      if(!$dbResult)
         echo mysql_error();
      
      $nominativo="$r[2]".' '."$r[1]";
      $mail_from_name="\"$nominativo\"";
      $mail_from_mail=$r[4];
      /*
      $header = "MIME-Version: 1.0\r\n";
      $header .= "Content-Type: text/html;\r\n charset=\"iso-8859-1\"\r\n";
      $header .= "From: $mail_from_name <$mail_from_mail>\r\n";
      $header .= "Content-Transfer-Encoding: 7bit\r\n";
      */

      // intestazioni generali
      $header = "From: ".$mail_from_name." <$mail_from_mail>\n";
      
      // intestazioni specifiche per il formato HTML
      $header .= "MIME-Version: 1.0\n";
      $header .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
      $header .= "Content-Transfer-Encoding: 7bit\n\n";      



               
      $mail_to = "ordini@pincopallino.it";
      
      // Recupero acquisti
      $query="SELECT * FROM acquisto where idOrdine = $idOrdine";
      $result1 = mysql_query($query,$db);
      $num_rows = mysql_num_rows($result1);
      
      // Recuper prodotti
      $query="SELECT prodotto.* FROM acquisto INNER JOIN prodotto on acquisto.idProdotto=prodotto.idProdotto where acquisto.idOrdine = $idOrdine";
      $result2 = mysql_query($query,$db);
      
      // Recupero l'ordine
      $query="SELECT * FROM ordine where idOrdine = $idOrdine";
      $result3 = mysql_query($query,$db);
      $ordine = mysql_fetch_array($result3);
      
      // Recupero utenti
      $query="SELECT utente.* FROM ordine INNER JOIN utente on ordine.idUtente=utente.idUtente where ordine.idOrdine= $idOrdine ";
      $result = mysql_query($query,$db);
      $utente = mysql_fetch_array($result);
      
         
      //MAIL
      $mail_body = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
                 <html xmlns=\"http://www.w3.org/1999/xhtml\">
                 <head>
                 <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />
                 <title>Proposta d'ordine</title>
                 </head>
                 <body>
                ";
       $subTotale=0;

      $mail_body .=
               "<table width=\"700\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
                  <tr>
                     <td>
                           <h1 align=\"center\"> Proposta d'ordine N. $idOrdine <br /> 
                           </h1>
                           <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\">
               ";
            
      for($i=0;$i<$num_rows;$i++){  
         mysql_data_seek ($result1, $i);
         $acquisti = mysql_fetch_array($result1);
         
         mysql_data_seek ($result2, $i);
         $prodotti = mysql_fetch_array($result2);  
         
         $totale[$i]=$prodotti[4]*$acquisti[3];
         
         $mail_body .=
               "
                  <tr>
                          <td class=\"bodo-sotto\">$prodotti[1] ($prodotti[6]Kg)</td>
                          <td class=\"bodo-sotto\" align=\"right\">$prodotti[4] &euro;</td>
                          <td class=\"bodo-sotto\" align=\"right\">$acquisti[3]</td>
                          <td align=\"right\" class=\"bodo-sotto\">$totale[$i] &euro;</td>
                      </tr>
               ";
            $subTotale=$subTotale+$totale[$i];
        };        
      $mail_body .=
               "  
                  <tr>
                          <td colspan=\"4\" valign=\"bottom\" align=\"right\">  
                              <br />
                              Subtotale: <strong>$subTotale &euro;</strong> 
                              IVA INCLUSA
                          </td>
                  </tr>
               </table>
               <br />
               <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\">
                  <tr>
                          <td colspan=\"2\"><h2>Dati personali</h2></td>
                          <td>&nbsp;</td>
                          <td colspan=\"2\"><h2>Dati per la spedizione</h2></td>
                     </tr>
                  <tr>
                          <td width=\"11%\"><em>Nome</em></td>
                          <td width=\"37%\">$utente[2]</td>
                          <td width=\"3%\">&nbsp;</td>
                          <td width=\"11%\"><em>Indirizzo</em></td>
                          <td width=\"38%\">$utente[5]</td>
                     </tr>
                  <tr>
                          <td><em>Cognome</em></td>
                          <td>$utente[1]</td>
                          <td>&nbsp;</td>
                          <td><em>Citt&agrave;</em></td>
                          <td>$utente[6]</td>            
                     </tr>
                     <tr>
                          <td><em>Telefono</em></td>
                          <td>$utente[3]</td>
                          <td>&nbsp;</td>
                          <td><em>Provincia</em></td>
                          <td>$utente[7]
                          &nbsp;&nbsp;- &nbsp;CAP $utente[8]</td>
                     </tr>
                     <tr>
                          <td><em>E-mail</em></td>
                          <td><a href=\"mailto:$utente[4]\">$utente[4]</a></td>
                          <td>&nbsp;</td>
                          <td><em>Nazione</em></td>
                          <td>$utente[9]</td>
                     </tr>
                  <tr>
                     <td><em>Ragione sociale</em></td>
                          <td>$utente[10]</td>
                     <td>&nbsp;</td>
                     <td><em>Codice fiscale</em></td>
                          <td>$utente[11]</td>            
                     </tr>
                  <tr>
                     <td><em>Partita iva</em></td>
                          <td>$utente[12]</td>               
                  </tr>
                     <tr>
                         <td colspan=\"5\">&nbsp;</td>
                      </tr>
                     <tr>
                         <td colspan=\"2\"><h3>Pagamento</h3></td>
                            <td>&nbsp;</td>
                            <td colspan=\"2\"><h3>Spedizione</h3></td>
                      </tr>
                     <tr>
                         <td colspan=\"2\">$ordine[3]</td>
                            <td>&nbsp;</td>
                            <td colspan=\"2\">$r[14]</td>
                      </tr>
                     <tr>
                         <td>&nbsp;</td>
                         <td>&nbsp;</td>
                         <td>&nbsp;</td>
                         <td>&nbsp;</td>
                         <td>&nbsp;</td>
                     </tr>
                  </table>
               <br /> 
               <h2>TOTALE ORDINE: $totalone &euro; iva inclusa</h2></td>
            </td>
         </tr> 
      </table>
      </body>
      </html>";

      mail($mail_to, "Prenotazione", $mail_body, $header);
                  
      header("Location: ../conferma-grazie.php?idOrdine=$idOrdine&idCategoria=$idCategoria");  
   };   
   mysql_close($db);   
   exit();
   
?>

Mi rendo conto che session_start(); non serve a nulla, ma è un residuo di un tentativo che mi son dimenticato di ripulire... quando è avvenuto l'accaduto c'era, quindi ce l'ho lasciato.

Chiedo anche un parere: è poco serio e imprudente passare le variabili con il GET? Converrebbe comunque mascherare l'url?

Grazie mille!

risposto 5 anni fa
Schiappa
X 0 X

L'hai detto tu stesso: il problema è se l'utente mette solo uno spazio vuoto (che non è null).

Puoi usre la funzione trim() per eliminare gli spazi in eccesso e poi comunque dovresti fare dei controlli più approfonditi sulle variabili che ti arrivano dall'utente (per esempio lunghezza minima/massima). Alcuni campi poi necessitano di ulteriori controlli: il telefono, la partita iva, l'email, ecc.

Dovresti comunque cambiare radicalmente il tuo approccio, non ti pare evidente che uno script fatto in questo modo sia assolutamente impossibile da mantenere? Devi separare i controlli dalla business logic e dalla presentazione.

risposto 5 anni fa
Massimiliano Arione
X 0 X

Ok...ho percepito e compreso la critica su l'ordine del codice e ne prenderò atto quanto prima;grazie!

Concordo sul fatto di dover fare più controlli ad hoc per ogni campo e di utilizzare trim(), ma la cosa strana è che mi è arrivata una mail (html) dove non vi erano specificati dati che alla fin fine erano presenti nell'intestazione...

es:

----- Original Message -----

From: pinco pallino

To: ordini@esercente.it

Sent: Tuesday, May 03, 2011 11:39 AM

Subject: Richiesta ordine dal sito

Proposta d'ordine N. 213

LARDO DI CINTA SENESE DOP (0.5Kg)            8.25         2    16.5?

FINOCCHIONA DI CINTA SENESE DOP (0.5Kg) 12.91?    2    25.82?

CAPOCOLLO DI CINTA SENESE DOP (0.5Kg)    12.91?    2    25.82?

SALSA PER CROSTINI (0.3Kg)                            4.95     2    9.9

Subtotale: 78.04?

Iva inclusa

Dati personali

Dati per la spedizione

Nome :                         (qui doveva esserci pinco)

Indirizzo :   

Cognome :                     (qui doveva esserci pallino)   

Città :   

Telefono :   

Provincia :

CAP :

E-mail :                         (qui la mail; infatti pinco pallino nell'intestazione è solo un alias:tenendoci sopra il

                                       cursore viene fuori l'indirizzo mail)

Nazione :   

Ragione sociale :   

Codice fiscale :   

Partita iva :   

Pagamento :   ricevuta fiscale

Spedizione :   zonaA

TOTALE ORDINE: 98.04  iva inclusa

A regola se viene inserito uno spazio e basta in un campo obbligatorio e non viene utilizzato il trim(), i controlli vengono passati, come se ci fosse realmente l'informazione desiderata. C'è da dire però che in questo caso io non dovevo avere quelle informazioni nell'intestazione: infatti queste non sono altro che i dati raccolti nella form che in realtà mancano dove specificato....

Spero di esser stato abbastanza chiaro.

Grazie ancora!

risposto 5 anni fa
Schiappa
X 0 X

Usi variabili diverse per il nome del mittente e per il nome/cognome nel corpo del messaggio.

Prima usi $mail_from_name e poi l'array $utente

risposto 5 anni fa
Massimiliano Arione
X 0 X

Sì, è vero, ma entrambe le variabili hanno il solito identico valore!

cito:

<?php
               $r[1]=stripslashes($_POST['nome']);
          $r[2]=stripslashes($_POST['cognome']);
          $r[3]=stripslashes($_POST['telefono']);
          $r[4]=stripslashes($_POST['email']);
          $r[5]=stripslashes($_POST['indirizzo']);
          $r[6]=stripslashes($_POST['citta']);
          $r[7]=stripslashes($_POST['provincia']);
          $r[8]=stripslashes($_POST['cap']);      
          $r[9]=stripslashes($_POST['nazione']);

               // etc.....

                $query="INSERT INTO `utente` ( `cognome` , `nome` , `telefono` , `email` , `indirizzo` , `citta` , `provincia`, `cap`, `nazione`, `ragioneSociale`, `codiceFiscale`, `partitaIva`  )
      VALUES ( '$r[2]' , '$r[1]', '$r[3]', '$r[4]', '$r[5]', '$r[6]' , '$r[7]', '$r[8]', '$r[9]', '$r[11]', '$r[12]', '$r[13]' )";
      $dbResult = mysql_query($query,$db);   


                // etc.....

                $nominativo="$r[2]".' '."$r[1]";
      $mail_from_name="\"$nominativo\"";



                // Recupero utenti
      $query="SELECT utente.* FROM ordine INNER JOIN utente on ordine.idUtente=utente.idUtente where ordine.idOrdine= $idOrdine ";
      $result = mysql_query($query,$db);
      $utente = mysql_fetch_array($result);
?>

Quindi $nominativo equivale alla concatenazione del nome e del cognome, ovvero dati che verranno immessi nel database e poi estratti nell' array $utente.....

Potrebbe darsi che mi fallisce per qualche motivo l'inserzione dei dati nel database e quando arriva ad estrarli non trova nulla?

Se sì, quali potrebbero essere le cause per cui l' inserimento fallisce?

grazie

risposto 5 anni fa
Schiappa
X 0 X

Ci possono essere 1000 motivi per cui una query fallisce, devi per forza verificare per ogni singola query l'esito positivo o negativo.

E se vuoi essere sicuro che le variabili contengano lo stesso valore: o usi la stessa variabile, oppure, come detto sopra, ti assicuri che non fallisca né l'inserimento né la selezione.

risposto 5 anni fa
Massimiliano Arione
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda