carattere invio rn

  • Creatore Discussione Creatore Discussione karlo
  • Data di inizio Data di inizio

karlo

Nuovo Utente
20 Gen 2013
20
0
0
buongiorno a tutti
Ho un form html con una textarea dove l'utente scrive del testo da invire via mail con la funzione mail() di php. Tutto funziona bene ma quando prelevo il testo con mysql_real_escape_string($_POST['messaggio']) dalla textarea e lo invio alla mail trovo scritto degli "rn",senza apici, laddove è stato premuto invio.
Esempio, se nella textarea scrivo:
Ciao
Sono Carlo
Arrivederci
nella mail trovo scritto:
CiaornSono CarlornArrivederci
Come faccio ad eliminare quei rn?
Grazie ancora.
Carlo
 
cia
intanto quei caratteri \n o \r\n sono i caratteri dei fine riga, quindi se togli gli slash rimane n o rn senza andare a capo.
cimuque non va bene mysql_real_escape_string() che deve essere usata con il db eventualmente usa stripslashes().
poi se invii l'email in formato html usa nl2br() che trasforma \n o \r nel rispettivo tag html <br>
 
ciao borgo credo di aver fatto un bel minestone...
ti metto tutto il codice di questa pagina;
PHP:
<?php 

	include 'header.php';
	
?>
<script type="text/javascript">
function ContaCaratteri()
{
    document.forminviamail.conta.value = document.forminviamail.messaggio.value.length;
    var massimo = 150;
    if (document.forminviamail.messaggio.value.length > massimo)
    {
        document.forminviamail.messaggio.value = document.forminviamail.messaggio.value.substr(0, massimo);
        document.forminviamail.conta.value = massimo;
        alert("Massimo " + massimo + " caratteri!");
    }
	}
</script>
<div id="wrapper">

<?php 
$id = $_GET['cod'];//id del libro scelto
 $username=$_SESSION['utente']; // nome utente loggato
 $resultquery=mysql_query("SELECT email FROM utenti WHERE username ='$username'");
 $email_loggato=mysql_result($resultquery,0,'email');//$resultquery=risultato query sopra, 0= prima riga risultato query, 'email= valore campo email

?>

<?php 
	if(!isset($_POST['invia_contatto'])){?>	
					
		
					<form method="post" action="#" id="forminviamail"name="forminviamail">
					  
					  <ul>
					     
                         <li>
					      <label for="nome">Nome</label>
				          <input type="text" name="nome" id="nome" />
						 </li>
						 <li>
                          <label for="messaggio">Messaggio (Max 150 caratteri)</label>
					      <textarea name="messaggio" cols="40" rows="3" id="messaggio" onkeyUp="ContaCaratteri()"placeholder="Inserisci qui il messaggio da inviare al venditore."></textarea>
						  
						 </li>
						 <li>
						 <label for="controllo">Controllo caratteri digitati.</label>
						 <input type="text" name="conta" value="0" readonly style="width: 50px;">
						 </li>
						  <li>
						    <?php 
					        $recuperadatilibro = mysql_query("SELECT * FROM libri WHERE id='$id'");	
					        $row=mysql_fetch_assoc($recuperadatilibro);
					        ?>
						 
                          <label for="libro">Riepilogo del libro selezionato</label>
					      <textarea name="libro" cols="80" rows="8" id="textarealibro" >
ISBN:   <?php echo $row['isbn']?>
Titolo:   <?php echo $row['titolo']?>
Autore:   <?php echo $row['autore']?>
Editore:   <?php echo $row['editore']?>
Prezzo copertina:   <?php echo $row['prezzo_cop']?> Euro
Prezzo richiesto:   <?php echo $row['prezzo_ric']?> Euro
Stato del libro:   <?php echo $row['stato']?>
						  </textarea>
						 </li>
						 <br>
					    <input type="submit" name="invia_contatto" id="inviacontatto" value="Invia email" />
			          </ul>
				      
                    </form>
					
					 
                   <?php } else {
				                ?>
						     
							     <?php
							    $nome = mysql_real_escape_string($_POST['nome']);
					            $messaggio = mysql_real_escape_string($_POST['messaggio']);
							    $recuperadatilibro = mysql_query("SELECT * FROM libri WHERE id='$id'");	
					            $row=mysql_fetch_assoc($recuperadatilibro);
								
								$isbn = $row['isbn'];
								$titolo= $row['titolo'];
								$autore= $row['autore'];
								$editore=$row['editore'];
								$prezzo_cop= $row['prezzo_cop'];
								$prezzo_ric= $row['prezzo_ric'];
								$stato= $row['stato'];
								$email= $row['email'];
								
				                 //  stripslashes è una funzione di PHP che permette di eliminare da una stringa i caratteri di escape ( \ ) 
							    $nome=stripslashes($nome);
								$messaggio=stripslashes($messaggio);
								$isbn=stripslashes($isbn);
								$titolo=stripslashes($titolo);
								$autore=stripslashes($autore);
								$editore=stripslashes($editore);
								$prezzo_cop=stripslashes($prezzo_cop);
								$prezzo_ric=stripslashes($prezzo_ric);
								$stato=stripslashes($stato);
							     
				            
				                $to = "$email";// destinatario
							    $subject="Richiesta acquisto libro da Scambiolibritlc.";// oggetto
							    $header="From:" .$email_loggato ; // mittente
					            $message="$messaggio";
							    $message.="\r\n";
								$message.="\r\n";
							    $message.="Libro richiesto: \r\n";
								$message.="\r\n";
							    $message.="Codice ISBM: $isbn \r\n";
							    $message.="Titolo: $titolo \r\n";
								$message.="Autore: $autore \r\n";
								$message.="Editore: $editore \r\n";
								$message.="Prezzo di copertina: $prezzo_cop \r\n";
								$message.="Prezzo richiesto: $prezzo_ric";
							
							    $sentmail=mail($to,$subject,$message,$header);
				                  
								  	if($sentmail){
					                	?>
						              <script language="Javascript">
                                      alert('E-mail inviata correttamente.');
                                      </script>
							          <?php
							     	 header("Refresh: 0; URL= cerca.php");
							
						            }else{
						
							        	?>
						              <script language="Javascript">
                                      alert('Si è verificato un errore: la tua email non è stata inviata!');
                                      </script>
							          <?php
							         header("Refresh: 0; URL= cerca.php");
					            	}
								  }
								  
				                  ?>
				   
				   
			    <div id="divinfo">	
	            <center><img src="Immagini/info.jpeg" style=pos/></center>
	            <h5>
                <p>Compila i campi in questa pagina e invia una mail al venditore del libro che ti interessa.</p>
                <p>Se il proprietario del testo ti contetter&agrave; potrete finalizzare lo scambio tra di voi.</p>
                </h5>
	            </div>	
						   
				   
</div>
</body>
</html>
Ho capito che trovo scritto solo rn e non \r\n perche ho usato la funzione stripslashes() ma anche se la commento nell'email trovo scritto \r\n nel punto in cui è stato premuto invio. Come posso correggere questo errore eliminando quei \r\n usando mail() di php?
Grazie per la pazienza.
Carlo
 
grazie borgo sei gentilissimo.
Do un'occhiata e poi ti faccio sapere.
Grazie ancora
 
Risolto

ho risolto
E' bastato sostituire
PHP:
$messaggio = mysql_real_escape_string($_POST['messaggio']);
con
PHP:
$messaggio = $_POST['messaggio'];
come mi avevi suggerito tu nel primo post.
Grazie e a presto.
 

Discussioni simili