webForumDet fria alternativet

Problem med mailskript !

3 svar · 337 visningar · startad av dh85

dh85Medlem sedan maj 200422 inlägg
#1

Har problem med ett mailskript som ger följande felmeddelande på denna sida:

http://www.hpn.se/bestallning.php

Felmeddelande

Servern 'www.hpn.se' får inte använda detta scriptet. Scriptets array \"$domaner\" måste kompletteras i så fall.

« Tillbaka

Trots att jag ställt in rätt saker i variablar.php som ser ut så här:

<?
// Mailscript 1.0
// Copyright © 2001 Mathias Niklasson
// [url]http://www.niklasson.net/[/url]

##################################################
# Variablar

$dittnamn = "Daniel Henningsson";   // Ditt namn
$dinepost = "hejahv@home.se";   // Din e-postadress. Används om det inte finns någon mottagare i formuläret
$std_amne = "Beställning av projektarbete";   // Används som ämne om det inte finns något i formuläret

$visa_tack = 0;   // Om du vill skicka besökaren till en egen tacksida. Annars 0
// $tacksida = "http://www.hpn.se/tack.php";   // Tacksidans URL, om ovanstående variabel är 1.
// Om du vill använda flera formulär med olika tacksidor kan du sätta // framför ovanstående rad och göra
// ett extra fält i formuläret: <input type="hidden" name="tacksida" value="http://www.dindomän.se/tack.html">

$kolla_ref = 0;   // Kontrollera domänen som försöker använda scriptet. 1 är aktiv, 0 är inaktiv.
$domaner = array('www.hpn.se', 'hpn.se');   // Domäner som får lov att använda scriptet. Används enbart om $kolla_ref är 1.

##################################################

$script = "Mailscript 1.0";   // Ändra inte denna!!
?>

Mail.php ser ut så här:

<?
// Mailscript 1.0
// Copyright © 2001 Mathias Niklasson
// [url]http://www.niklasson.net/[/url]

##################################################
# Script

require ("variablar.php");

function fel($text)
{
require ("variablar.php");
include ("header.php");
?>
<p class="RubrikFont"><font color="#c94622">Felmeddelande</font>
<p><? echo $text; ?>
<p><a href="JavaScript:history.go(-1);">&#171 Tillbaka</a>
<?
include ("footer.php");
exit;
}

$referer = $HTTP_REFERER;

if (empty($referer))
{
fel("Du måste använda ett formulär för att kunna skicka e-post med detta script.");
}

$ref_ok = 0;
for ($i=0;$i<count($domaner);$i++)
{
	if ($kolla_ref != 2)
	{
	$ref_ok = 2; last;
	}
	if (eregi("^https?:\/\/$domaner[$i]",$referer))
	{
	$ref_ok = 2; last;
	}
}

$host = preg_replace("|^https?://([\w\.]+)|","\\1",$referer);
$host = preg_replace("|([\w\.]+)/(.*)?|","\\1",$host);

if ($ref_ok != 1)
{
fel("Servern <b>'$host'</b> får inte använda detta scriptet. Scriptets array <b>\&quot\$domaner\&quot</b> måste kompletteras i så fall.");
}

$meddelande = "Datum: ".date("Y-m-d (H:i)")." - IP: $REMOTE_ADDR\n";
$meddelande = $meddelande."Från: $namn"." ($epost)";
$meddelande = $meddelande."\n---------------------------------------------------------------------------";

if (!empty($HTTP_GET_VARS))
{
unset($get_data);
	while (list ($key,$value) = each ($HTTP_GET_VARS))
	{
		if($key=='mottagare' || $key=='amne' || $key=='namn' || $key=='epost' || $key=='tacksida' || $key=='x' || $key=='y')
		{
		}
		else
		{
		$get_data[$key]=$value;
		}
	}
}

if (!empty($HTTP_POST_VARS))
{
unset($post_data);
	while (list ($key,$value) = each ($HTTP_POST_VARS))
	{
		if ($key=='mottagare' || $key=='amne' || $key=='namn' || $key=='epost' || $key=='tacksida' || $key=='x' || $key=='y')
		{
		}
		else
		{
		$post_data[$key]=$value;
		}
	}
}

if (!empty($get_data))
{
	while (list ($key,$value) = each ($get_data))
	{
	$meddelande = $meddelande."\n$key: $value\n";
	}
}

if (!empty($post_data))
{
	while (list ($key,$value) = each ($post_data))
	{
	$meddelande = $meddelande."\n$key: $value\n";
	}
}

$meddelande = $meddelande."\n---------------------------------------------------------------------------\n";
$meddelande = $meddelande."$script © 2001 [url]http://www.niklasson.net/[/url]";

$meddelande = stripslashes($meddelande);

if (empty($mottagare))
{
$mottagare = $dinepost;
}
if (empty($amne))
{
$amne = $std_amne;
}
if (empty($user))
{
fel("Du glömde skriva ditt användarnamn!");
}
if (empty($passwd))
{
fel("Du glömde skriva ditt lösenord !");
}
else
{
	if (!eregi("^.+\@.+\..+$",$email))
	{
	fel("Ogiltlig e-postadress!");
	}
}

mail ("$dittnamn <$mottagare>", "$amne", "$meddelande", "From: $namn <$epost>");

if (empty($visa_tack))
{
include ("header.php");
?>
<p class="RubrikFont"><font color="#c94622">Mailet skickades!</font>
<p>Tack för ditt mail.
<p><a href="JavaScript:history.go(-1);">&#171 Tillbaka</a>
<?
include ("footer.php");
}
else
{
header("Location: $tacksida");
}
?>

Bestallning.php ser ut så här:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Svenska HPN-F&ouml;reningen Barn &amp; Ungdom</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="style.css" type="text/css">
</head>

<body>
<p align="center"><font size="2"><b>» BESTÄLL DANIELS PROJEKTARBETE...</b></font></p>
<p align="center"><img src="../P1010037.JPG" width="365" height="303"></p>
<p align="center">Fyll bara i nedanst&aring;ende foruml&auml;r och tryck p&aring; 
  skicka s&aring; kommer jag kontakta dig f&ouml;r vidare information ! </p>
<p align="center"><strong>Kostnad: 99:- + portoavgift.</strong></p>
<p align="center"><strong><font color="#FF0000">OBS ! Just nu har vi tekniska 
  problem med foruml&auml;ret vilket g&ouml;r att det inte g&aring;r att best&auml;lla 
  genom det. Vi jobbar p&aring; att l&ouml;sa problemet s&aring; fort som m&ouml;jligt 
  ! Tills vidare kan ni skicka ett vanligt mail till mig med nedanst&aring;ende 
  uppgifter ! Adress: <a href="mailto:hejahv@home.se">hejahv@home.se</a>. </font></strong></p>
<form action="php-script/mailscript/mail.php" method="post">
  <div align="center"> 
    <table border="0" cellpadding="0" cellspacing="0">
      <tr> 
        <td>Namn:</td>
        <td><input type="text" name="namn" size="25"></td>
      </tr>
      <tr> 
        <td>E-post:</td>
        <td><input type="text" name="epost" size="25"></td>
      </tr>
      <tr> 
        <td>Adress:</td>
        <td><input type="text" name="Adress" size="25"></td>
      </tr>
      <tr> 
        <td>Postnr:</td>
        <td><input type="text" name="Postnr" size="10"> </td>
      </tr>
      <tr> 
        <td>Ort:</td>
        <td><input type="text" name="Ort" size="25"></td>
      </tr>
      <tr> 
        <td valign="top">Meddelande:</td>
        <td><textarea name="Meddelande" rows="6" cols="28"></textarea></td>
      </tr>
      <tr> 
        <td colspan="2" height="10"></td>
      </tr>
      <tr> 
        <td></td>
        <td><input type="submit" value="Skicka"> <input type="reset" value="Rensa"></td>
      </tr>
    </table><input type="hidden" name="tacksida" value="http://www.hpn.se/tack.php">
  </div>
</form> <? include ("php-script/mailscript/footer.php");
?></td> </tr> </table>

Vad kan vara fel ??

Tacksam för svar !!

lunne82Medlem sedan dec. 2003153 inlägg
#2

$domaner = array('www.hpn.se', 'hpn.se'); // Domäner som får lov att använda scriptet. Används enbart om $kolla_ref är 1.

Här har du ju satt den till 0?

dh85Medlem sedan maj 200422 inlägg
#3

Precis och därför borde den inte reagera på det felet !

//

lunne82Medlem sedan dec. 2003153 inlägg
#4
$ref_ok = 0;

for ($i=0;$i<count($domaner);$i++)
{
    if ($kolla_ref != 2)
    {
    $ref_ok = 2; last;
    }
    if (eregi("^https?://$domaner[$i]",$referer))
    {
    $ref_ok = 2; last;
    }
}

$host = preg_replace("|^https?://([w.]+)|","\1",$referer);
$host = preg_replace("|([w.]+)/(.*)?|","\1",$host);

if ($ref_ok != 1)
{
fel("Servern <b>'$host'</b> får inte använda detta scriptet. sriptets array <b>&quot\$domaner&quot</b> måste kompletteras i så fall.");
}

Vart står det att om $kolla_ref är 0 ska den inte utföra kontrollen? Men jag är trött nu så jag kan ha missat det...

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