-
Email dal sito.....
Come molti staranno già pensando io voglio mandare delle email dal sito e mi serve il codice ma nn è del tutto così,in pratica io il codice già ce l'ho e funziona così:
si apre una finestra popup con il mittente già impostato tramite prendendo l'email da una tabella
Quello ke vorrei fare io è prendere l'email del destinatario da un link ke è scritto nella pagina
In pratica l'email funziona come link per aprire il popup e una volta aperto ci dovrebbe essere già il destinatario ke viene preso dal nome del link
Forse mi sono un pò spiegato male quindi riporto un esempio
riporto un esempio:
prova.html
Codice HTML:
<script type="text/javascript">
<!--
function PopupCentrata() {
var w = 500;
var h = 320;
var l = Math.floor((screen.width-w)/2);
var t = Math.floor((screen.height-h)/2);
window.open("invia.php","","width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
}
//-->
</script>
<a href="javascript:PopupCentrata()">destinatario@hotmail.it</a>
invia.php
Codice PHP:
<?
$username = "gbtchiaravalle";
$password = "password";
$host = "localhost";
$database = "my_gbtchiaravalle";
$db=mysql_connect($host, $username, $password) or die("Errore durante la connessione al database");
mysql_select_db($database, $db) or die("Errore durante la selezione del database");
if(isset($_COOKIE['ID_my_site']))
{
$username = $_COOKIE['ID_my_site'];
$pass = $_COOKIE['Key_my_site'];
$check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());
while($info = mysql_fetch_array( $check ))
{
if ($pass != $info['password'])
{ header("Location: index.php");
}
else
{
}
}
}
else
{
header("Location: index.php");
}
$user=$_COOKIE['ID_my_site'];
$dati=mysql_query("SELECT email FROM users WHERE username='$user'");
while($array=mysql_fetch_array($dati)){
$tuaemail=$array[email];
}
?>
<table border="0">
<form action="<?php echo $PHP_SELF;?>" method="post">
<tr><td>Tua Email:</td><td>
<? echo $tuaemail; ?>
</td></tr>
<tr><td>Email Destinatario:</td><td>
<input type="text" name="emaild"> </td></tr>
<tr><td>Titolo Email:</td><td>
<input type="text" name="oggetto"></td></tr>
<tr><td>Testo:</td><td>
<textarea name="testo" rows="10" cols="40">
</textarea>
</td></tr>
<tr><th colspan=2><input type="submit" name= "submit" value="Invia"></th></tr></table></form>
<?
$oggetto=$_POST['oggetto'];
$testo = $_POST['testo'];
if (isset($_POST['submit'])) {
if (!$_POST['emaild'] | !$_POST['oggetto'] | !$_POST['testo']) {
die('<div align=center><font color=red>Non hai completato tutti i campi richiesti!</font></div>');
}
$intestazioni= "From:$tuaemail\r\n";
$intestazioni .= "X-Mailer: PHP/".phpversion();
mail($_POST['emaild'],"$oggetto","$testo", $intestazioni);
?>
<div align=center><font color=red>Email inviata!</font></div>
<?
}
?>
Se nn avete capito provo a spiegarmi meglio!
Fatemi sapere!
-
Se non ho capito male ti basta cambiare il link che generi.
invece che farlo cosi :
Codice PHP:
<a href="javascript:PopupCentrata()">destinatario@hotmail.it</a>
lo crei cosi :
Codice PHP:
<a href="javascript:PopupCentrata('destinatario@hotmail.it')">destinatario@hotmail.it</a>
e la funzione :
Codice PHP:
<script type="text/javascript">
<!--
function PopupCentrata(mail) {
var w = 500;
var h = 320;
var l = Math.floor((screen.width-w)/2);
var t = Math.floor((screen.height-h)/2);
window.open("invia.php?mail=" + mail,"","width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
}
//-->
</script>
e nello script lo recuperi con
Codice PHP:
$_GET['mail']
-
allora io ho modificato così:
prova.html
Codice HTML:
<script type="text/javascript">
<!--
function PopupCentrata() {
var w = 500;
var h = 320;
var l = Math.floor((screen.width-w)/2);
var t = Math.floor((screen.height-h)/2);
window.open("invia.php?mail=" + mail","","width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
}
//-->
</script>
<a href="javascript:PopupCentrata('prova@hotmail.it')">Apri la popup</a>
invia.php
Codice PHP:
<?
$username = "gbtchiaravalle";
$password = "password";
$host = "localhost";
$database = "my_gbtchiaravalle";
$db=mysql_connect($host, $username, $password) or die("Errore durante la connessione al database");
mysql_select_db($database, $db) or die("Errore durante la selezione del database");
if(isset($_COOKIE['ID_my_site']))
{
$username = $_COOKIE['ID_my_site'];
$pass = $_COOKIE['Key_my_site'];
$check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());
while($info = mysql_fetch_array( $check ))
{
if ($pass != $info['password'])
{ header("Location: index.php");
}
else
{
}
}
}
else
{
header("Location: index.php");
}
$user=$_COOKIE['ID_my_site'];
$dati=mysql_query("SELECT email FROM users WHERE username='$user'");
while($array=mysql_fetch_array($dati)){
$tuaemail=$array[email];
}
$emaild=$_GET['mail'];
?>
<table border="0">
<form action="<?php echo $PHP_SELF;?>" method="post">
<tr><td>Tua Email:</td><td>
<? echo $tuaemail; ?>
</td></tr>
<tr><td>Email Destinatario:</td><td>
<? echo $emaild; ?> </td></tr>
<tr><td>Titolo Email:</td><td>
<input type="text" name="oggetto"></td></tr>
<tr><td>Testo:</td><td>
<textarea name="testo" rows="10" cols="40">
</textarea>
</td></tr>
<tr><th colspan=2><input type="submit" name= "submit" value="Invia"></th></tr></table></form>
<?
$oggetto=$_POST['oggetto'];
$testo = $_POST['testo'];
if (isset($_POST['submit'])) {
if (!$_POST['oggetto'] | !$_POST['testo']) {
die('<div align=center><font color=red>Non hai completato tutti i campi richiesti!</font></div>');
}
$intestazioni= "From:$tuaemail\r\n";
$intestazioni .= "X-Mailer: PHP/".phpversion();
mail($_GET['mail'],"$oggetto","$testo", $intestazioni);
?>
<div align=center><font color=red>Email inviata!</font></div>
<?
}
?>
Ma nn apre più per niente la finestra poup!!
-
Ti sei scordato di mettere la variabile mail nella dichiarazione della funzione js e se non vedo male c'e' un " in piu :)
Prova cosi :
Codice PHP:
<script type="text/javascript">
<!--
function PopupCentrata(mail) {
var w = 500;
var h = 320;
var l = Math.floor((screen.width-w)/2);
var t = Math.floor((screen.height-h)/2);
window.open("invia.php?mail=" + mail,"","width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
}
//-->
</script>
-
grande adesso apre il popup!! però nn arriva l'email!
-
da qualche errore o dice che va tutto bene ma non arriva nulla?
-
dice ke l'email l'ha inviata ma nn arriva assolutamente nulla:è probabile ke sia lo script xkè l'ho creato modificando uno già esistete(per il reucpero delle password perse) e quello funziona!
-
Non so per la gestione dei cookie ma gli ho dato una ritoccatina veloce, se non mi è sfuggito nulla cosi dovrebbe andare :
Codice PHP:
<?
$username = "gbtchiaravalle";
$password = "password";
$host = "localhost";
$database = "my_gbtchiaravalle";
$db=mysql_connect($host, $username, $password) or die("Errore durante la connessione al database");
mysql_select_db($database, $db) or die("Errore durante la selezione del database");
if(isset($_COOKIE['ID_my_site']))
{
$username = $_COOKIE['ID_my_site'];
$pass = $_COOKIE['Key_my_site'];
$check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());
while($info = mysql_fetch_array( $check ))
{
if ($pass != $info['password'])
header("Location: index.php");
}
}
else
header("Location: index.php");
$user = $_COOKIE['ID_my_site'];
$dati = mysql_query("SELECT email FROM users WHERE username='$user'");
$array=mysql_fetch_array($dati);
$tuaemail=$array[email];
$emaild = $_GET['mail'];
?>
<table border="0">
<form action="<?php echo $PHP_SELF;?>" method="post">
<tr><td>Tua Email:</td><td>
<? echo $tuaemail; ?>
</td></tr>
<tr><td>Email Destinatario:</td><td>
<? echo $emaild; ?> </td></tr>
<tr><td>Titolo Email:</td><td>
<input type="text" name="oggetto"></td></tr>
<tr><td>Testo:</td><td>
<textarea name="testo" rows="10" cols="40">
</textarea>
</td></tr>
<tr><th colspan=2><input type="submit" name= "submit" value="Invia"></th></tr></table></form>
<?
$oggetto = $_POST['oggetto'];
$testo = $_POST['testo'];
if (isset($_POST['submit']))
{
if ( !$_POST['oggetto'] | !$_POST['testo'])
die('<div align=center><font color=red>Non hai completato tutti i campi richiesti!</font></div>');
$intestazioni = "From:" . $tuaemail . "\r\n";
$intestazioni .= "Reply-To:" . $tuaemail . "\r\n";
$intestazioni .= "X-Mailer: PHP/" . phpversion();
mail ($emaild, $oggetto, $testo, $intestazioni);
?>
<div align=center><font color=red>Email inviata!</font></div>
<?
}
?>
EDIT :
Principalmente credo sia dovuto al fatto che la funzione mail vuole nelle intestazioni anche il reply-to.
-
ehmm nn funziona lo stesso!
Cmq ho scritto all'inizio dello script questo codice per vedere gli errori:
Codice PHP:
<?
$errore = error_reporting(E_ALL);
echo "$errore";
?>
e facendo partire lo script mi rileva l'errore "85" sapete di ke errore si tratta?
EDIT
ho provato anche un altro script per l'invio delle mail ma si blocca anche quello quindi credo l'errore sia quando passiamo il destinatario allo script,almeno credo!
-
mi puoi incollare tutto il messaggio di errore?
-
il messaggio di errore ke compare è il numero "85" e basta nn compare altro solo "85"
-
(riferimento: http://it.php.net/manual/it/function...-reporting.php)
La funzione error_reporting non deve essere assegnata ad una variabile... basta inserirla in testa allo script per visualizzare tutti gli errori che questo provoca.
Stammi bene...
-
ahhh nn lo sapevo! adesso l'errore nn è più 85 ma è questo
"Notice: Use of undefined constant email - assumed 'email' in /membri/gbtchiaravalle/invia.php on line 32"
ke fa riferimento a questa porzione di codice:
Codice PHP:
$user = $_COOKIE['ID_my_site'];
$dati = mysql_query("SELECT email FROM users WHERE username='$user'");
$array=mysql_fetch_array($dati);
$tuaemail=$array[email];
-
Perché nessuno legge i messaggi di errore? dice che la costante "email" è sconosciuta, mancano un paio di apici attorno ad email nell'ultima riga.
Codice PHP:
$tuaemail=$array['email'];
fra parentesi, non è mai bello dare alle variabili nomi di parole chiave, e non aiuta di certo a capire il codice: $array non dice assolutamente nulla a proposito dei dati contenuti. Meglio $risultati ad esempio.
-
si i nomi l'ho messi così alla svelta,poi li sistemo a fine script funzionante cmq ora nn compare più quell'errore ma una volta inviata l'email compare quest'altro:
Notice: Undefined index: mail in /membri/gbtchiaravalle/invia.php on line 34
-
in sostanza come risolvo?
P.S: ho fatto un pò di debug e ho scoperto ke il campo de destinatario(nel mio caso "emaild") rimane vuoto(NULL)!!