jeg forsøger at lave en tilmeldingsliste til min hygge-hjemmeside, hvor man får en mail når man har tilmeldt sig. og så man kan se de andre som har tilmeldt sig...
syntes jeg er nået ret langt, og har fat i den rigtige ende, men kan ikke rigtig hitte ud af resten..
er der nogen venlige sjæle der kan hjælpe ?
der er sikkert også blevet puttet for meget unødvendigt materiale ind, ...man kan såå at sige, at jeg har prøvet mig frem på må og få
oveni hatten er jeg helt ny her på sitet så jeg må be om forladelse hvis jeg gør noget forkert...
jeg vil blive rigtig glad hvis der er en der kan omskrive det for mig eller hjælpe med at sige hvad jeg gør forkert. for jeg er fuldstændig kommet på herrens mark !?
mit domæne er inde på one.com
jeg kan få mailsystemet til at virke!! juhuu!! men jeg kan ikke få vist andet end $email i bunden af scriptet...
vil gerne have det så brugeren kan se de tilmeldtes navne, tlf og noter..
og så et andet php-script hvor admin kan se det hele...
mysql ser sådan her ud:
CREATE TABLE `tilmelding` (
`id` int(11) NOT NULL auto_increment,
`navn` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`tlf` varchar(255) NOT NULL default '',
`note` varchar(255) NOT NULL default '',
`ip` varchar(255) NOT NULL default '',
`dato` varchar(255) NOT NULL default '',
`creation` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `navn` (`navn`),
UNIQUE KEY `email` (`email`,`tlf`(5),`navn`(10))
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
settings.php:
<?php
$admin_email = 'email'; //Is where mail is sent to (users are bcc)
$domain = 'domain'; //Is used as maillist name
/** Tekst i mail til nytilmeldte. Pas på: e-mail indskydes imellem arrayenes to pladser **/
$signedup_header = array("E-mailadressen "," har tilmeldt sig maillisten hos $domain");
$signedup_message = array("E-mailadressen "," er blevet tilmeldt maillisten hos $domain\n".
"Du vil høre nærmere når der sker opdateringer på siden.\n\n".
"Du kan besøge os via følgende link http://$domain\n\n".
"Du kan framelde din e-mail via følgende link ".
"http://$domain\n\n".
"Spørgsmål kan rettes til administratoren på $admin_email.\n".
"Tak for interessen og på genhør.\n\n".
"Mvh.\nMaillisten $domain");
/** Tekst i mail til afmeldte. Pas på: e-mail indskydes imellem arrayenes to pladser **/
$signeddown_header = array("E-mailadressen "," har frameldt sig maillisten hos $domain");
$signeddown_message = array("E-mailadressen "," er blevet frameldt maillisten på $domain.
\n\nDu finder os her http://$domain\n\nMvh.\nMaillisten $domain");
/** Ændre følgende fire variabler til at passe med din MySQL-database **/
$username = 'database';
$password = 'code';
$host = 'localhost';
$database = 'database';
/** Ændre kun hvis du bruger et andet tabelnavn i databasen end standard **/
$dbTableName = 'tilmelding';
?>
index.php eller maillist.php:
<?php
$isLoggedIn = TRUE; //Symbolizes password protection of administrators stuff
require('maillistEngine.php');
if(!($email = $_REQUEST['email']))
$email = 'din@email.dk';
$isLoggedIn = TRUE;
require_once('maillistEngine.php');
if(!($navn = $_REQUEST['navn']))
$navn = 'dit navn';
$isLoggedIn = TRUE;
require_once('maillistEngine.php');
if(!($tlf = $_REQUEST['tlf']))
$tlf = 'tlf';
$isLoggedIn = TRUE;
require_once('maillistEngine.php');
if(!($note = $_REQUEST['note']))
$note = 'note:';{
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">
<head>
<title>Mailliste</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="stylesheet.css" media="all" />
</head>
<body>
<h1>tilmelding</h1>
<h3 class="red">Brugere</h3>
<p>Her kan du tilmelde eller framelde dig maillisten samt administrere tilmeldte mailadresser.</p>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" id="maillistMainForm">
<fieldset>
<legend>Maillisten</legend>
<input id="email" name="email" type="text" value="<?php echo $email ?>" />
<input id="navn" name="navn" type="text" value="<?php echo $navn ?>" />
<input id="tlf" name="tlf" type="text" value="<?php echo $tlf ?>" />
<textarea name="note" id="note"><?php echo $note ?></textarea>
<br />
<input type="submit" id="signUp" name="signUp" value="Tilmeld" />
<input type="submit" id="signDown" name="signDown" value="Frameld" />
</fieldset>
</form>
<?php
/** Shows status info to users when enter/exit the list **/
if($_REQUEST['signUp']) {
echo signUp($email);
}
if($_REQUEST['signDown']) {
echo signDown($email);
}
?>
<hr />
<h3 class="red">Administratore</h3>
<?php
/** Shows all maillist users signed up - for administrators only! **/
if($isLoggedIn==TRUE) {
echo showMaillistAdmin();
}
?>
<!-- starter tabellen -->
<table width="400px" border="1" cellspacing="0" style="border-collapse: collapse;width:600px" bordercolor="#999999">
<?php
include("config.php"); // Laver hul til databasen
$list_query = mysql_query("SELECT * FROM tilmelding ORDER BY id"); // henter fra databasen, sortering af ID
// Alle overskrifterne
echo"<tr>";
echo"<td><b>Navn:</b></td>";
echo"<td><b>Email:</b></td>";
echo"<td><b>tlf:</b></td>";
echo"<td><b>Ip:</b></td>";
echo"<td><b>Tilmeldt d.:</b></td>";
echo"<td><b>note:</b></td>";
echo"</tr>";
// her henter vi selve data fra databasen
while ($list = mysql_fetch_array($list_query)) {
echo"<tr>";
echo"<td>$list[navn]</td>"; // vi udskriver navn i en celle
echo"<td>$list[email]</td>"; // vi udskriver email i en celle
echo"<td>$list[tlf]</td>"; // vi udskriver tlf i en celle
echo"<td>$list[note]</td>"; // vi udskriver note i en celle
echo"<td>$list[ip]</td>"; // vi udskriver ip i en celle
echo"<td>$list[dato]</td>"; // vi udskriver dato i en celle
echo"</tr>";
}
?>
</table> <!-- afslutter tabellen -->
</body>
</html>
maillistengine.php:
require_once('mysqlHandler.php');
/**
* Function for signing up new users to the maillist.
*/
function signUp($email) {
require('settings.php');
$navn = addslashes($navn);
$email = addslashes($email);
$tlf = addslashes($tlf);
$note = addslashes($note);
if(strcmp($email,'din@email.dk') === 0) {
return '<p>Indtast din e-mailadresse og klik på tilmeld hvis du ønsker '.
'at modtage nyhedsmail fra '.$domain.'</p>';
}
mysqlConnect();
if(strlen($email) > 0) {
if(checkEmail($email)) {
$resultat = mysqlQuery("SELECT null FROM $dbTableName WHERE email='$email'");
if(mysql_num_rows($resultat) > 0) {
$besked = '<p>E-mailadressen <em>'.$email.'</em> er allerede tilmeldt.</p>';
} else {
$sql = "INSERT INTO $dbTableName (email,navn,tlf,creation) VALUES ('$email','$navn','$tlf',NOW())";
$success = mysqlQuery($sql);
if($success === TRUE) {
$header = "From: $admin_email". "\r\n".
"Bcc: $admin_email". "\r\n".
"X-Mailer: PHP/".phpversion();
mail($email,
trim(str_replace('\n', ' ', implode($email, $signedup_header))),
implode($email, $signedup_message),
$header);
$besked = '<h3 style="color:green">Tak for tilmeldingen</h3>'.
'<p>Du er nu registreret i maillisten med e-mailadressen <em>'.
$email.'</em>. En mail med info er blevet sendt til din '.
'e-mailadresse.</p>';
} else {
$besked = '<p style="color:red">Der opstod en mindre fejl - '.
'Prøv at framelde og derefter tilmelde din e-mailadresse igen, '.
'ellers kontakt Webmasteren og meld fejlen.</p>';
}
}
} else {
$besked = '<p>Det lader til at du har angivet ugyldig e-mailadresse. '.
'Tjek at du ikke har tastet forkert og prøv igen. '.
'Ellers kontakt webmasteren og meld fejlen.</p>';
}
} else {
$besked = '<p>Du har ikke indtastet nogen e-mailadresse.</p>';
}
mysqlClose();
return $besked;
}
/**
* Function for removing users from the maillist.
*/
function signDown($email) {
require('settings.php');
$email = addslashes($email);
if(strcmp($email,'din@email.dk') === 0) {
return '<p>Indtast din e-mailadresse og klik på frameld og du vil ikke modtage '.
'flere nyhedsmails fra '.$domain.'.</p>';
}
mysqlConnect();
if(strlen($email) > 0) {
$resultat = mysqlQuery("SELECT email FROM $dbTableName WHERE email='$email'");
if(mysql_num_rows($resultat) > 0) {
$success = mysqlQuery("DELETE FROM $dbTableName WHERE email='$email'");
if($success === TRUE) {
$header = "From: $admin_email". "\r\n".
"Bcc: $admin_email". "\r\n".
"X-Mailer: PHP/".phpversion();
mail($email,
trim(str_replace('\n', ' ', implode($email, $signeddown_header))),
implode($email, $signeddown_message),
$header);
$besked = '<h2 class="green">Frameldt e-mail</h2>'.
'<p>E-mailadressen <em>'.$email.'</em> er blevet frameldt maillisten. '.
'En bekræftigelsesmail er blevet sendt til din e-mailadresse.</p>';
} else {
$besked = '<p class="red">Der opstod en mindre fejl - '.
'Prøv at framelde din e-mailadresse igen, '.
'ellers kontakt Webmasteren og meld fejlen.</p>';
}
} else {
$besked = '<p>E-mailadressen er <em>ikke</em> tilmeldt og kan derfor ikke '.
'frameldes.</p>';
}
} else {
$besked = '<p>Du har ikke indtastet nogen e-mailadresse.</p>';
}
mysqlClose();
return $besked;
}
/**
* Administrators function: shows all users in the maillist and links to mail these separately.
*/
function showMaillistAdmin() {
require('settings.php');
mysqlConnect();
$emails = mysqlGetMatrix("SELECT email FROM $dbTableName");
$navn = mysqlGetMatrix("SELECT navn FROM $dbTableName");
mysqlClose();
$antal = count($emails);
if($antal > 0) {
$mailtoall = '<a href="mailto:'.$admin_email.'?bcc=';
for($i=0; $i<$antal; $i++) {
$email = strtolower($emails[$i][0]);
$mailtoall .= $email.';';
$mailtosingle[] = '<li class="singleEmail"><a href="mailto:'.$email.'">'.
$email.'</a></li>';
}
$mailtoall .= '" title="Mail alle via dit eget mailprogram">'.
'Mail alle på listen med f.eks. Outlook (Bcc)</a>';
sort($mailtosingle);
return '<h3>Mail hele listen ('.$antal.' tilmeldte)</h3>'.
'<ul><li>'.showMailToMaillistLink().'</li>'.
'<li>'.$mailtoall.'</li></ul>'.
'<h3>Tilmeldte brugere på listen</h3>'.
'<p>E-mailadresser kan rettes ved at slette og genoprette via '.
'til- og afmeldingsformularen.</p>'.
'<ol>'.implode($mailtosingle).'</ol>'.
'<p><a href="#">» Til toppen</a></p>';
} else {
return '<p>Kunne ikke finde nogle tilmeldte e-mailadresser i listen!</p>';
}
}
/**
* Administrators function: Show send to maillist form.
*/
function showMailToMaillistLink() {
$formContent = '';
$default = '<input type="hidden" id="mailAll" name="mailAll" value="1" />'.
'<input type="submit" value="Skriv Nyhedsmail" '.
'title="Udsend nyhedsmail til alle tilmeldte på maillisten." />';
$confirmation = '<legend>Skriv til maillisten</legend>'.
'<label for="subject">Emne: </label>'.
'<input type="text" id="subject" name="subject" size="25" value="'.$_POST['subject'].
'" /><br />'.
'<label for="subject">Besked: </label>'.
'<textarea id="message" name="message" cols="25" rows="5">'.$_POST['message'].
'</textarea><br />'.
'<input type="hidden" class="text" id="mailAll" name="mailAll" value="2" />'.
'<label> </label>'.
'<input type="submit" value="Udsend mail" />'.
'<input type="reset" value="Annullér" '.
'onclick="window.location=\''.$_SERVER['PHP_SELF'].'\'" />';
$done = '<button title="Klik her for at lukke besked." '.
'onclick="window.location=\''.$_SERVER['PHP_SELF'].'\'">OK</button>';
switch($_POST['mailAll']) {
case 0 : {
$formContent = '<div>'.$default.'</div>';
$style = '';
break;
}
case 1 : {
$formContent = '<fieldset>'.$confirmation.'</fieldset>';
break;
}
case 2 : {
if(strlen(($subject = $_POST['subject'])) > 0
&& strlen(($message = $_POST['message'])) > 0) {
$formContent = '<fieldset>'.
mailToMaillist($subject, $message).$done.'</fieldset>';
}
else {
$formContent = '<fieldset>'.$confirmation.
'<p class="red" id="maillistInfo">'.
'Husk at udfylde både emnebeskrivelse og besked.'.
'</p></fieldset>';
}
break;
}
default : 0;
}
return '<form action="'.$_SERVER['PHP_SELF'].'" method="post" id="maillistMailAllForm">'.
$formContent.'</form>';
}
/**
* Administrators function: Send a mail to all maillist users.
*/
function mailToMaillist($subject, $message) {
require('settings.php');
if(!checkEmail($admin_email)) {
return '<p>Angiv korrekt administrator e-mail i »settings.php«</p>';
}
$subject = trim(str_replace('\n', ' ', $subject));
$message = trim(wordwrap($message, 70));
$maillist = getMaillistUsers();
$bcc = trim(implode(', ', $maillist), ', ');
$header = "From: $admin_email" . "\r\n".
"Reply-to: $admin_email" . "\r\n".
"Bcc: $bcc" . "\r\n".
"X-Mailer: PHP/".phpversion();
if(mail($admin_email, $subject, $message, $header)) {
return '<div>'.
'<h3 class="green" id="maillistInfo">Nyhedsmail afsendt til '.count($maillist).
' tilmeldte</h3>'.
'<table>'.
'<tr>'.
'<td>Emne:</td>'.
'<td>'.$subject.'</td>'.
'</tr>'.
'<tr>'.
'<td>Besked:</td>'.
'<td>'.$message.'</td>'.
'</tr>'.
'</table></div>';
}
else {
return '<p class="red" id="maillistInfo">Kunne ikke sende mail til maillisten. '.
'Kontakt administrator.</p>';
}
}
/**
* Administrators function: Get array of all rows in the maillist table.
*/
function getMaillistUsers() {
require('settings.php');
mysqlConnect();
$result = mysqlGetMatrix("SELECT email FROM $dbTableName");
mysqlClose();
for($i = 0; $i < count($result); $i++) {
extract($result[$i]);
$maillist[] = $email;
}
return $maillist;
}
/**
* Administrators function: check if an email looks ok and is at a real domain.
*/
function checkEmail($email) {
if((preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/',$email)) ||
(preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)))
{
$host = explode('@', $email);
if(checkdnsrr($host[1].'.', 'MX')) {
return true;
}
if(checkdnsrr($host[1].'.', 'A')) {
return true;
}
if(checkdnsrr($host[1].'.', 'CNAME')) {
return true;
}
}
return false;
}
?>
mysqlhandler.php:
<?php
function mysqlConnect() {
require('settings.php');
if(!checkMySQL()) {
mysqlErrorMessage('<p style="color:red"><strong>Kunne ikke finde PHP\'s MySQL-modul. '.
'Tjek din php-konfiguration</strong></p>');
return;
}
if(!mysql_connect($host, $username, $password)) {
mysqlErrorMessage('Kunne ikke oprette forbindelse til MySQL');
return;
}
if(!mysql_select_db($database)) {
mysqlErrorMessage('Kunne ikke vælge databasen: »'.$database.'«');
}
}
/**
* Simply calls the standard mysql_query but makesuse of the error function.
* Suitable for requests that do not return data e.g. INSERT, UPDATE, DELETE, etc.
* @return Resource - MySQL resource on success else false and error function is called.
*/
function mysqlQuery($query) {
$result = mysql_query($query);
if(!$result) {
mysqlErrorMessage('Kunne ikke udfører: »'.$query.'«');
return false;
}
return $result;
}
/**
* Extracts and returns all rows and columns in a table into a matrix (two dimensional array)
* on succes else false.
* Suitable for requests that do return data e.g. SELECT.
* @return String[] - The extracted matrix or false.
*/
function mysqlGetMatrix($query) {
$result = mysql_query($query);
if(!$result) {
mysqlErrorMessage('Kunne ikke udfører: »'.$query.'«');
return false;
}
while(($rowArray = mysql_fetch_array($result)) != FALSE) {
$matrix[] = $rowArray;
}
return $matrix;
}
/**
* Close the connection to the MySQL host and database.
*/
function mysqlClose() {
if(!mysql_close()) {
mysqlErrorMessage('Kunne ikke lukke forbindelsen til MySQL-databasen');
}
}
/**
* Check if PHP has access to the MySQL functions.
*/
function checkMySQL() {
if(function_exists('mysql_connect')) {
return true;
}
return false;
}
/**
* Stop PHP execution and write out MySQL error in HTML.
*/
function mysqlErrorMessage($error) {
$out = '<p><strong style="color:red">MySQL-fejl:</strong> ' . $error;
if($mysqlError = mysql_error()) {
$out .= '.<br /><strong style="color:red">Fejlen er:</strong> <em>'.$mysqlError.
'</em>.</p>';
}
else {
$out .= '.</p>';
}
exit($out);
}
?>
hov!! den her maillist.php virker...
havde vidst pillet for meget ;-)
<?php
/** Remember to edit the file "settings.php" **/
$isLoggedIn = TRUE; //Symbolizes password protection of administrators stuff
require_once('maillistEngine.php');
if(!($email = $_REQUEST['email'])) {
$email = 'din@email.dk';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">
<head>
<title>Mailliste</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="stylesheet.css" media="all" />
</head>
<body>
Din IP-adresse er:
<?php echo $_SERVER['REMOTE_ADDR']; ?>
<h1>Mailliste</h1>
<h3 class="red">Brugere</h3>
<p>Her kan du tilmelde eller framelde dig maillisten samt administrere tilmeldte mailadresser.</p>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" id="maillistMainForm">
<fieldset>
<legend>Maillisten</legend>
<input id="email" name="email" type="text" value="<?php echo $email ?>" />
<br />
<input type="submit" id="signUp" name="signUp" value="Tilmeld" />
<input type="submit" id="signDown" name="signDown" value="Frameld" />
</fieldset>
</form>
<?php
/** Shows status info to users when enter/exit the list **/
if($_REQUEST['signUp']) {
echo signUp($email);
}
if($_REQUEST['signDown']) {
echo signDown($email);
}
?>
<hr />
<h3 class="red">Administratore</h3>
<?php
/** Shows all maillist users signed up - for administrators only! **/
if($isLoggedIn==TRUE) {
echo showMaillistAdmin();
}
?>
</body>
</html>
jeg ville blive rigtig glad hvis der er nogen der vil kikke på det, eller skal der nogle gryn på bordet før det har interesse ?
Indlæg senest redigeret d. 03.09.2009 21:11 af Bruger #15267