Avatar billede 44fire44 Nybegynder
02. januar 2004 - 17:56 Der er 8 kommentarer og
1 løsning

Maillist problemer!

Jeg har en maillist der gemmer som text-fil...

jeg har på forsiden denne funktion:

<form method=post action="files/maillist/maillist.php">
               
                    <img src="images/form-email.gif" alt="Insert your e-mail in the field below" align="left" width="72" height="15"><br>
                    <input align="middle" type='text' name='email' size="15" maxlength="50">
                    <input type='image' src='images/form-send.gif' action="subscribe" name="submit" align="left" alt="Click to submit your e-mail" value="subscribe">
                    <input type='image' src='images/form-afmeld.gif' action="unsubscribe" align="right" alt="Click to submit your e-mail" value="unsubscribe" >
                  </form>

--------------> det er den jeg sender over til maillist.php
men når skriver en email og trykker på Tilmeld/Afmeld, får jeg denne fejl:

Emailadressen er falsk. Gå venligst tilbage og prøv igen...! (en fejl side der hedder error.html) - hvorfor?

såvidt jeg kan se, så er mailadresserne rigtige, men den melder jo fejl ;( - min maillist.php er:


-------------maillist.php---------------

<?
error_reporting(0);
include("config.php");

function checkmail ($email)
{
    global $listfile;
    $fd = fopen ($listfile, "r");
    $contents = fread ($fd, filesize ($listfile));
    fclose ($fd);
   
    if (@stristr($contents,$email))
        $valid = "invalid";
    if (eregi("^[_\.0-9a-z-]+@([0-9a-z][-0-9a-z\.]+)\.([a-z]{2,3}$)", $email) && !isset($valid))
        $valid = "valid";
    else
        $valid = "invalid";
   
    return $valid;
}

if ($action == "subscribe" && isset($email))
{
    $valid = checkmail($email);
    if ($valid == "valid")
    {
        $fp = fopen($listfile, 'a+');
            flock($fp,2);
            fwrite($fp,"".strtolower($email).",");
        fclose($fp);
        header ("Location: ".$welcome."");
        exit;               

    }
    else {
        header ("Location: ".$error."");
        exit;               
    }
}   
elseif ($action == "unsubscribe" && isset($email))
{
    $fd = fopen ($listfile, "r");
    $contents = fread ($fd, filesize ($listfile));
    fclose ($fd);
    $allpeople = "";
    $entries = explode(",",$contents);
    for($i=0;$i<count($entries);$i++)
    {
        if (strtolower($email) == strtolower($entries[$i]))
            $found = "yes";
        elseif ($entries[$i] != "")
            $allpeople .= "".$entries[$i].",";
    }
    if ($found == "yes")
    {
        $fp = fopen($listfile, 'w');
            fwrite($fp,$allpeople);
        fclose($fp);
    }
    header ("Location: ".$goodbye."");
    exit;               
   
}
else
    header ("Location: ".$error."");
    exit;               
?>


(jeg har intet specielt i min config.php - jo, jeg har de sider der kalder fejl og velkommen/farvel når man har trykket...)


HVAD ER FEJLEN? - jeg er ved at blive sindsyg ;)
/44fire44
Avatar billede 44fire44 Nybegynder
02. januar 2004 - 18:00 #1
og jeg har ChMod'ed mine txt-filer til 777...
Avatar billede 44fire44 Nybegynder
02. januar 2004 - 18:27 #2
det skal måske siges at jeg normalt henter sider ud i index.php (startsiden/skabelonen) med index.php?page=files/FIL - kan det have noget med det at gøre!?
Avatar billede tefcke Nybegynder
02. januar 2004 - 18:35 #3
Mit gæt er at fejlen ligger i din funktion (checkmail).

@stristr($contents,$email)
gør faktsik ikke noget...

stristr returnerer alt efter $email fra strengen $contents.
(Returns all of haystack from the first occurrence of needle to the end.)

Det vil sige at efter du har kaldt denne funktion (som ikke gør noget sådan som du bruger den der), vil du have email adressen og alt efter email adressen.
Avatar billede 44fire44 Nybegynder
02. januar 2004 - 18:36 #4
skal jeg så bare fjerne funktionen?
Avatar billede 44fire44 Nybegynder
02. januar 2004 - 18:41 #5
jeg fjernede den, mendet virker stadig ikke :(

$error kalder siden der melder fejl... - jeg tror det er denne der kalder den...

}
else
    header ("Location: ".$error."");
    exit;               
?>
Avatar billede tefcke Nybegynder
02. januar 2004 - 18:41 #6
Nej, men du skal nok lige finde en måde hvorpå du kan identificer, at den indtastede email findes i strengen $content.

Hvis du ændrer:
    if (@stristr($contents,$email))
        $valid = "invalid";
    if (eregi("^[_\.0-9a-z-]+@([0-9a-z][-0-9a-z\.]+)\.([a-z]{2,3}$)", $email) && !isset($valid))
        $valid = "valid";
    else
        $valid = "invalid";

til
// $content er FALSE hvis email adressen ikke fandtes i $content
// $content er en string hvis email adressen blev fundet
$content = stristr($contents,$email);
if ( $content == false )
  $valid = 'invalid';
else
  $valid = 'valid';
Avatar billede 44fire44 Nybegynder
02. januar 2004 - 18:44 #7
nope - den melder stadig fejl :(

jeg testede scriptet før jeg ændrede det, og da virkede det...

jeg tror enten det er noget med mine index.php?page= kald eller også sender min <form> noget forkert!?
Avatar billede 44fire44 Nybegynder
02. januar 2004 - 19:24 #8
nå... - jeg prøver lige noget andet...

nu har jeg denne form...

<form action="index.php" name="subscribe" onsubmit="java script:return checkEmail(this);">
<input name="email" type="text" class="box" id="email" value="Your email " size="20">
<input name="subscribe" type="radio" value="true" checked> Subscribe
<input type="radio" name="subscribe" value="false"> Un-Subscribe
<input name="Submit2" type="submit" class="box" value="Submit">
<input name="page" type="hidden" value="subscribe" >


hvordan får jeg den lavet om til at jeg bare skal bruge de 2 billeder jeg havde i den første del (bare for at være 100% sikker!)
Avatar billede 44fire44 Nybegynder
02. januar 2004 - 19:40 #9
tror jeg lukker -> har droppet det jeg lavede før...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester