Avatar billede codemanager Nybegynder
07. januar 2004 - 15:02 Der er 22 kommentarer og
1 løsning

stop ved ingen @

Hejsa

jeg har dette script

<?php
// Vis alle kommentarer for en nyhed
include_once("../mysql_funktioner.php");
aabn_forbindelse_og_vaelgdb();
if ($_POST["id"]) {
    $nyhedsid = $_POST["id"];
} else {
    $nyhedsid = $_GET["id"];
}

if (!$nyhedsid) {
    echo "Intet nyheds-id angivet.";
} else {

    if ($_POST[add_comment]) {
        $navn = $_POST["navn"];
        $email = $_POST["mail"];
        $kommentar = addslashes($_POST[kommentar]);
        $addcomment = mysql_query("insert into kommentarer (nyhedsid, forfatternavn, forfattermail, kommentar, dato) VALUES ('".$nyhedsid."','".$navn."','".$mail."','".$kommentar."',NOW())") or die(mysql_error());
        echo "Din kommentar er tilføjet. Mange tak.<br /><br />";
    }
    $getcomments = mysql_query("select id, forfatternavn, forfattermail, dato, kommentar from kommentarer where nyhedsid='".$nyhedsid."'");
    if (mysql_num_rows($getcomments) > 0) {
        while ($r = mysql_fetch_array($getcomments)) {
            echo "<a href='mailto:'.$r[forfattermail].''>".$r[forfatternavn]."</a> - ".$r[dato]."<br />";
            echo stripslashes($r[kommentar])."<br /><br />";
        }
    } else {
        echo "Ingen kommentarer tilføjet til denne nyhed endnu.";
    }
?>
<hr>
<form action="<? $_SERVER[PHP_SELF];?>" method="post">
<input type="hidden" name="id" value="<? $nyhedsid;?>">
Dit navn:<br>
<input type="text" name="navn" class="input"><br><br>
Din e-mail adresse:<br>
<input type="text" name="email" class="input"><br><br>
Kommentar:<br>
<textarea cols="0" rows="5" name="kommentar" class="input"></textarea><br><br>
<div align="center"><input type="submit" name="add_comment" value=" - Tilføj - " class="button">
</form>
<?
}
?>

er der nogen der kan gøre sådan at hvis der ingen @ er i email så skal den udskrive en fejl har snrt prøvet alt og kan bare ikke få det til og virke
Avatar billede tefcke Nybegynder
07. januar 2004 - 15:11 #1
Jeg bruger selv følgend regulærre udtryk til at validerer email adresser, men jeg vil på ingen måde stå inde for at den er 100% rigtig!

if (!preg_match_all('/^([a-zA-Z0-9]+)([a-zA-Z0-9._-]*|[a-zA-Z0-9]*)@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]*([a-zA-Z0-9]))+$/', $email, $matches)) {
    // Email adressen er ikke gyldig
} else {
    // Email adressen er gyldig
}
Avatar billede codemanager Nybegynder
07. januar 2004 - 15:20 #2
hmm hvordan sætter jeg lige det ind
Avatar billede codemanager Nybegynder
07. januar 2004 - 15:22 #3
jeg har sat det ind sådan

<?php
// Vis alle kommentarer for en nyhed
include_once("../mysql_funktioner.php");
aabn_forbindelse_og_vaelgdb();
if ($_POST["id"]) {
    $nyhedsid = $_POST["id"];
} else {
    $nyhedsid = $_GET["id"];
}

if (!$nyhedsid) {
    echo "Intet nyheds-id angivet.";
} else {

if (!preg_match_all('/^([a-zA-Z0-9]+)([a-zA-Z0-9._-]*|[a-zA-Z0-9]*)@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]*([a-zA-Z0-9]))+$/', $email, $matches)) {
echo"Email adressen er ikke gyldig";// Email adressen er ikke gyldig
} else {
    // Email adressen er gyldig

    if ($_POST[add_comment]) {
        $navn = $_POST["navn"];
        $email = $_POST["mail"];
        $kommentar = addslashes($_POST[kommentar]);
        $addcomment = mysql_query("insert into kommentarer (nyhedsid, forfatternavn, forfattermail, kommentar, dato) VALUES ('".$nyhedsid."','".$navn."','".$mail."','".$kommentar."',NOW())") or die(mysql_error());
        echo "Din kommentar er tilføjet. Mange tak.<br /><br />";
    }
    }
    $getcomments = mysql_query("select id, forfatternavn, forfattermail, dato, kommentar from kommentarer where nyhedsid='".$nyhedsid."'");
    if (mysql_num_rows($getcomments) > 0) {
        while ($r = mysql_fetch_array($getcomments)) {
            echo "<a href='mailto:'.$r[forfattermail].''>".$r[forfatternavn]."</a> - ".$r[dato]."<br />";
            echo stripslashes($r[kommentar])."<br /><br />";
        }
    } else {
        echo "Ingen kommentarer tilføjet til denne nyhed endnu.";
    }
   
?>
<hr>
<form action="<? $_SERVER[PHP_SELF];?>" method="post">
<input type="hidden" name="id" value="<? $nyhedsid;?>">
Dit navn:<br>
<input type="text" name="navn" class="input"><br><br>
Din e-mail adresse:<br>
<input type="text" name="email" class="input"><br><br>
Kommentar:<br>
<textarea cols="0" rows="5" name="kommentar" class="input"></textarea><br><br>
<div align="center"><input type="submit" name="add_comment" value=" - Tilføj - " class="button">
</form>
<?
}
?>

men nu udskriver den fejlen hele tiden
Avatar billede tefcke Nybegynder
07. januar 2004 - 15:26 #4
<?php
// Vis alle kommentarer for en nyhed
include_once("../mysql_funktioner.php");
aabn_forbindelse_og_vaelgdb();
if ($_POST["id"]) {
    $nyhedsid = $_POST["id"];
} else {
    $nyhedsid = $_GET["id"];
}

if (!$nyhedsid) {
    echo "Intet nyheds-id angivet.";
} else {

    if ($_POST[add_comment]) {
        $navn = $_POST["navn"];
        $email = $_POST["mail"];
        if (!preg_match_all('/^([a-zA-Z0-9]+)([a-zA-Z0-9._-]*|[a-zA-Z0-9]*)@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]*([a-zA-Z0-9]))+$/', $email, $matches)) {
            echo"Email adressen er ikke gyldig";
        } else {
            $kommentar = addslashes($_POST[kommentar]);
            $addcomment = mysql_query("insert into kommentarer (nyhedsid, forfatternavn, forfattermail, kommentar, dato) VALUES ('".$nyhedsid."','".$navn."','".$mail."','".$kommentar."',NOW())") or die(mysql_error());
            echo "Din kommentar er tilføjet. Mange tak.<br /><br />";
        }
    }
    $getcomments = mysql_query("select id, forfatternavn, forfattermail, dato, kommentar from kommentarer where nyhedsid='".$nyhedsid."'");
    if (mysql_num_rows($getcomments) > 0) {
        while ($r = mysql_fetch_array($getcomments)) {
            echo "<a href='mailto:'.$r[forfattermail].''>".$r[forfatternavn]."</a> - ".$r[dato]."<br />";
            echo stripslashes($r[kommentar])."<br /><br />";
        }
    } else {
        echo "Ingen kommentarer tilføjet til denne nyhed endnu.";
    }
?>
<hr>
<form action="<? $_SERVER[PHP_SELF];?>" method="post">
<input type="hidden" name="id" value="<? $nyhedsid;?>">
Dit navn:<br>
<input type="text" name="navn" class="input"><br><br>
Din e-mail adresse:<br>
<input type="text" name="email" class="input"><br><br>
Kommentar:<br>
<textarea cols="0" rows="5" name="kommentar" class="input"></textarea><br><br>
<div align="center"><input type="submit" name="add_comment" value=" - Tilføj - " class="button">
</form>
<?
}
?>
Avatar billede tefcke Nybegynder
07. januar 2004 - 15:29 #5
Der er også lige nogen fejl i din kode:
<? $_SERVER[PHP_SELF];?>  -->  <? echo $_SERVER[PHP_SELF];?>
<? $nyhedsid;?>  -->  <? echo $nyhedsid;?>
Avatar billede codemanager Nybegynder
07. januar 2004 - 15:31 #6
okay tak

men der er et problem nu den vil ikke tilføje det i min db heller ikke selv om der er @ med
Avatar billede tefcke Nybegynder
07. januar 2004 - 15:38 #7
Hvad skriver den ud til skærmen?
Avatar billede codemanager Nybegynder
07. januar 2004 - 15:40 #8
du kan se det her http://codemanager.1go.dk
og så kommetar
Avatar billede tefcke Nybegynder
07. januar 2004 - 15:44 #9
Prøv den her, rettet nogen ting som så lidt suspekte ud :)
<?php
// Vis alle kommentarer for en nyhed
include_once("../mysql_funktioner.php");
aabn_forbindelse_og_vaelgdb();
if ($_POST["id"]) {
    $nyhedsid = $_POST["id"];
} else {
    $nyhedsid = $_GET["id"];
}

if (!$nyhedsid) {
    echo "Intet nyheds-id angivet.";
} else {

    if ($_POST[add_comment]) {
        $navn = $_POST["navn"];
        $email = $_POST["mail"];
        if (!preg_match_all('/^([a-zA-Z0-9]+)([a-zA-Z0-9._-]*|[a-zA-Z0-9]*)@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]*([a-zA-Z0-9]))+$/', $email, $matches)) {
            echo"Email adressen er ikke gyldig";
        } else {
            $kommentar = addslashes($_POST[kommentar]);
            $addcomment = mysql_query("insert into kommentarer (nyhedsid, forfatternavn, forfattermail, kommentar, dato) VALUES ('$nyhedsid','$navn','$email','$kommentar',NOW())") or die(mysql_error());
            echo "Din kommentar er tilføjet. Mange tak.<br /><br />";
        }
    }
    $getcomments = mysql_query("select id, forfatternavn, forfattermail, dato, kommentar from kommentarer where nyhedsid='$nyhedsid'");
    if (mysql_num_rows($getcomments) > 0) {
        while ($r = mysql_fetch_array($getcomments)) {
            echo "<a href='mailto:{$r[forfattermail]}'>{$r[forfatternavn]}</a> - {$r[dato]}<br />";
            echo stripslashes($r[kommentar])."<br /><br />";
        }
    } else {
        echo "Ingen kommentarer tilføjet til denne nyhed endnu.";
    }
?>
<hr>
<form action="<?php echo $_SERVER[PHP_SELF]; ?>" method="post">
<input type="hidden" name="id" value="<?php echo $nyhedsid; ?>">
Dit navn:<br>
<input type="text" name="navn" class="input"><br><br>
Din e-mail adresse:<br>
<input type="text" name="email" class="input"><br><br>
Kommentar:<br>
<textarea cols="0" rows="5" name="kommentar" class="input"></textarea><br><br>
<div align="center"><input type="submit" name="add_comment" value=" - Tilføj - " class="button">
</form>
<?
}
?>
Avatar billede codemanager Nybegynder
07. januar 2004 - 15:47 #10
den siger stadigvæk at email ikke er gyldig selb om der er @ og det hele
Avatar billede tefcke Nybegynder
07. januar 2004 - 15:48 #11
Prøv efter
echo"Email adressen er ikke gyldig";

at indsætte disse debug linjer:
echo"<pre>",
var_dump($matches);
echo"</pre>";

Så kan man se hvad der blev matched, og hvad der ikke gjorde.
Avatar billede codemanager Nybegynder
07. januar 2004 - 15:51 #12
array(5) {
  [0]=>
  array(0) {
  }
  [1]=>
  array(0) {
  }
  [2]=>
  array(0) {
  }
  [3]=>
  array(0) {
  }
  [4]=>
  array(0) {
  }
}
Avatar billede tefcke Nybegynder
07. januar 2004 - 15:55 #13
Ahhh, har fundet din fejl ... i din fom kalder du email feltet email. men du bruger $_POST['mail'] i din kode.

Ændre:
$_POST['mail']
til
$_POST['email']

så skulle det virke
Avatar billede codemanager Nybegynder
07. januar 2004 - 15:55 #14
hmm det forstod jeg ikke meget af
Avatar billede codemanager Nybegynder
07. januar 2004 - 15:55 #15
hehe ja kan se det
Avatar billede codemanager Nybegynder
07. januar 2004 - 15:58 #16
jeps så virker det tak for hjælpen

kan du ikke lige smide et svar

jo lige en ting mere hvordan læste du det ud fra den kode
Avatar billede tefcke Nybegynder
07. januar 2004 - 16:03 #17
HeHe, mange års erfaring hjælper ;-)
Så at arrayet af matches fra detregulære udtryk var rimlig tomt. Det betyder at den variabel der blev tjekket i sikkert også var tom, og så backtrackede jeg variablen $email baglæns gennem koden til der var noget som ikke passede.
Avatar billede codemanager Nybegynder
07. januar 2004 - 16:05 #18
okay på den måde så forstår jeg det men du skal havde tak for hjælpem
Avatar billede Slettet bruger
07. januar 2004 - 17:57 #19
Nu er der givet svar, men jeg vil lige bemærke, at + også er et gyldigt tegn ihvertfald i brugerdelen af en email-adresse. Der er måske også andre gyldige tegn, tefckes regex ignorerer.
Avatar billede tefcke Nybegynder
07. januar 2004 - 18:18 #20
"men jeg vil på ingen måde stå inde for at den er 100% rigtig!"
Jeg er godt klar over den ikke er fuldstændig, men jeg havde i sin tid ikke lyst til at sidde og glo en RFC igennem for at få den 100% korrekt :)
Avatar billede Slettet bruger
07. januar 2004 - 18:33 #21
Helt iorden, jeg fangede den også bare, fordi jeg netop har et par emailadresser med +.

Fidusen er nemlig, at hvis der bliver sendt til en bruger sandbox+exp på min server, så bliver mailen afleveret i brugeren sandbox's mailbox, og mit filter kan derefter bruge modtageradressen til en hel masse sjov.

Jeg kan derfor ofte se på spam, hvor de har fået min adresse fra.

Men du skal ikke være ked af, at du glemte det lille +, for de såkaldt professionelle, der har lavet jubiis brugersystem kan heller ikke finde ud af det. De har også glemt den.
Avatar billede tefcke Nybegynder
07. januar 2004 - 18:39 #22
hehe, det er jeg da glad for at høre ;o)
Avatar billede Slettet bruger
07. januar 2004 - 18:57 #23
Her på experten har de dog styr på sagerne. Endnu et plus til E ;-)
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