webForumDet fria alternativet

tipsa en vän - funktion

PHPur PHP

6 svar · 537 visningar · startad av hildurblad

hildurbladMedlem sedan maj 2003107 inlägg
Frågan#1

Hej,

Skulle behöva en "tipsa en vän" funktion till min sida. Finns det en sådan svensk gratistjänst man kan använda sig av, eller måste jag sätta ihop något själv? (Måste nämligen betala extra på webbhotellet om jag skall använda mig av PHP.)

Tack!

WibbeMedlem sedan jan. 200337 inlägg
#2

Det är enkelt att göra, jag kan principen men har inte funktionerna i huvudet.

Om användaren har gått in på en nyhet tillexempel, så trycker han på "tipsa en vän", då poppas ett fönster upp där han ska skriva in sin polares email. Då mailas ett mail till användaren med hans namn och $var_användaren_kom_från_sist, då borde nyheten komma fram.

hildurbladMedlem sedan maj 2003107 inlägg
#3

men hur gör man då?

Hej,
Det låter ju bra, men hur gör man då?

Mattes avatarMatteMedlem sedan aug. 20002 975 inlägg
#4

Gjorde häromdagen en enkel sådan, åt någon, du kan utveckla den själv till hur du vill ha utseende på formulär och innehåll i mailet.

<?php 

function validate($adress) {
	if (preg_match('/^[-A-z0-9_.]+[@][A-z0-9_-]+([.][A-z0-9_-]+)*[.][A-z]{2,8}$/', $adress)){
    return true;
  } else return false;
}

if (isset($_POST['tips_submit'])) {

   $to = $_POST['to'];
   $from = $_POST['from'];
   $name = $_POST['name'];
   $header = "&#70;rom: $name<$from>\r\n"; 
   $header .= "Reply-To: $from\r\n";
   $subject = "Tips på sida";
   $message = "Ta en titt på [url]http://www.domän.com/[/url] \n\n";
   $message .= "Tipsare: $name \n\n".$_POST['message'];

   if (!validate($to)) {
      $error[] = "Felaktig Till-adress";
   }
   
   if (!validate($from)) {
      $error[] = "Felaktig Från-adress";
   }
   
   if (!isset($error)) {
      mail($to, $subject, $message, $header);
      header("Location: ".$_SERVER['PHP_SELF']."?mailsent=$to");
      exit;
   }

}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" 
  content="text/html; charset=iso-8859-1">
<title>Tipsa en vän</title>
<style type="text/css">
<!-- 
.form-table {
  font-family:arial,sans-serif;
  font-size:x-small; 
  width:400px; 
  border:2px solid gray; 
  background-color: #A5A5D0;
} 
.form-cell-head {
  font-weight:bold;
  padding:5px;
  background-color:#FFFFCC;
}
.form-cell-body {
  padding-left:3px;
  padding-right:3px;
  color:#FFFFFF;
}
-->
</style>
</head>
<body>

<?php

// Skriv ut eventuella felmeddelande
if (isset($error)) {
   echo "<ul style=\"margin-top:0px;font-family:arial,sans-serif;font-size:x-small;\">";
   foreach ($error as $val) echo "<li>$val</li>";
   echo "</ul>";
   $message = $_POST['message'];
} else {
   // initiera tomma formulärfält
   $to = "";
   $from = "";
   $name = "";
   $message = "";
}

if (isset($_GET['mailsent'])) {
  echo "<p style=\"margin-top:0px;font-family:arial,sans-serif;font-size:x-small;\">
     Tipset skickat till {$_GET['mailsent']}
  </p>";
}

?>

<form action="<?=$_SERVER['PHP_SELF'] ?>" method="post" style="margin:0px">

<table cellpadding="0" cellspacing="0" width="100%" class="form-table">
<tr>
<td colspan="2" class="form-cell-head">Tipsa en vän om den här sidan</td>
</tr>
<tr>
<td width="30%" style="padding-left:3px;padding-right:3px;color:#FFFFFF">Ditt namn:</td>
<td width="70%"><input type="text" name="name" value="<?=$name ?>" style="width:100%"></td>
</tr>
<tr>
<td class="form-cell-body">Din e-mail:</td>
<td><input type="text" name="from" value="<?=$from ?>" style="width:100%"></td>
</tr>
<tr>
<td class="form-cell-body">Vännens e-mail:</td>
<td><input type="text" name="to" value="<?=$to ?>" style="width:100%"></td>
</tr>
<tr>
<td  valign="top" class="form-cell-body" style="padding:3px;">Meddelande:</td>
<td><textarea name="message" rows="4" style="width:100%"><?=$message ?></textarea></td>
</tr>
<tr>
<td colspan="2" align="center" style="padding:3px"><input type="submit" name="tips_submit" value="Tipsa en vän!"></td>
</tr>

</table>
</form>

</body>
</html>
hildurbladMedlem sedan maj 2003107 inlägg
#5

allt i samma?

Tack! Jag har aldrig pysslat med php tidigare. Hur skall jag göra? Skall all kod in i samma dokument och döpas till .php? Måste man ha ngt särskilt program i datorn så att man ska kunna testa om det funkar innan man lägger ut det?

:q :q :q

Mattes avatarMatteMedlem sedan aug. 20002 975 inlägg
#6

För att kunna testa PHP-skript lokalt måste du ha en webbserver med PHP installerat.

En bra webbserver för att testa PHP med är Apache.

Tyvärr kommer det ändå inte att hjälpa dig att testa detta skript lokalt, eftersom du dessutom behöver en mailserver.

HTML-delen ser du (plus lite PHP-kod) om du tittar på koden i en webbläsare utan att ha en webbserver installerad.

Som du själv funderade på, öppna detta skript i en popup, och lägg till en länk i botten för att stänga popupen, så ska du inte behöva göra några ändringar mer än på HTML-delen (Om så önskas).

Naturligtvis vill du dessutom ändra på meddelandet i mailet.

Detta är ämnet på mailet:

$subject = "Tips på sida";

Detta är de två första raderna i meddelande-delen:

   $message = "Ta en titt på [url]http://www.domän.com/[/url] \n\n";
   $message .= "Tipsare: $name \n\n".$_POST['message'];

Det som börjar med $ bör du inte ändra för det är variabler som kommer från formuläret, här namn och ett meddelande den som tipsar kan skicka med. Du kan annars ändra det som ligger inom citationstecken, med den begränsningen att vill du ha ett citationstecken med i mailet så sätter du backslash framför: \"
\n betyder radbyte i mailet.

Jag fick för mig att läsa igenom denna tråd innan jag skickade iväg det jag skrivit ovan, och fattar det som att du inte har stöd för PHP på ditt webbhotell. Då faller egentligen allt jag skrivit ovan, för utan PHP-stöd går det inte.

hildurbladMedlem sedan maj 2003107 inlägg
#7

inte just nu

Hej och tack för din hjälp! Just nu har jag inte stöd för PHP men jag skall beställa den tjänsten imorgon. Så dina tips kommer nog till användning iaf.

135 ms totalt · 3 externa anrop · v20260731065814-full.58439ac5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)