Avatar billede oleoleo1 Nybegynder
01. februar 2008 - 21:38 Der er 10 kommentarer og
1 løsning

Flush eller redirect $POST?

Hej Eksperten.

Jeg har et forholdsvis simpelt problem (I guess)..

Jeg er ved at lave en side hvor man kan indtaste sin email og på den melde sig på en emailliste. Hvis den indtastede email allerede eksisterer i databasen, skal siden udskrive dette og gøre noget andet bagefter..

Jeg kunne godt tænke mig, hvis jeg kunne sætte en $error = "<tekst>" og refreshe siden og udskrive denne. Jeg har prøvet med: echo "<meta http-equiv=\"Refresh\" content=\"0;url=".$HTTP_SERVER_VARS[PHP_SELF]."\">"; men den "nulstiller" hele siden hver gang der bliver trykket submit. Jeg har også prøvet unset($POST['email']). Problemet er, at hvis man én gang har indtastet f.eks. en ugyldig email, huskes denne hver gang siden bliver refreshed.
Avatar billede kakster Nybegynder
01. februar 2008 - 22:05 #1
jeg har et færdigt script... hvis du gerne vil se det.. det tjekke om e-mailadressene r lagt ind
Avatar billede jkandersen Nybegynder
01. februar 2008 - 22:09 #2
Hvis det kan løse mit problem - evt. ved lidt omskrivning - er det da et forsøg værd.
Avatar billede oleoleo1 Nybegynder
01. februar 2008 - 22:09 #3
jo tak gerne...
Avatar billede kakster Nybegynder
01. februar 2008 - 22:13 #4
her er funktionen der tjekker om mailadressen er der i forvejen:

        $sql = "SELECT * FROM mailliste WHERE mail = '$mail'";
        $query = mysql_query($sql);
        $antal = mysql_num_rows($query);
        if ($antal == "") {
            $ip = $REMOTE_ADDR;
            $add = "insert into mailliste (id,navn,mail,ip,tid) values ('','$navn', '$mail', '$ip',now())";
            mysql_query($add);
            echo $mail . " blev tilføjet";
Avatar billede kakster Nybegynder
01. februar 2008 - 22:14 #5
der mangler lige et }
Avatar billede kakster Nybegynder
01. februar 2008 - 22:14 #6
og her er hele scriptet:
<?php
require_once ('includes/config.php');

echo "Her kan du tilmelde/afmelde min nyhedsmail. Jeg vil forsøge at sende nyhedsmail ud en 6-8 gange i løbet af et år. <br/>
            Du vil være en af de første der får at vide om nye tiltag. Liste over hvornår jeg afholder kurser, se hvor jeg udstiller, eller hvis der sker noget nyt
            på hjemmesiden<p/>";
           
echo    '    <form method="post" action="?site=nyhedsmail&action=on">
            <center>
            <table>
            <tr>
            <td>Navn:</td><td> <input name="navn" type="text" maxsize="50"/ ></td>
            </tr>
            <tr>
            <td>Mail:</td> <td><input name="mail" type="text" maxsize="100"/> </td>
            </tr>
            </table>
            <select name="valg">
                <option value="Tilmeld" selected>Tilmeld</option>
                <option value="Afmeld">Afmeld</option>
            </select><br/>
            <input type="submit" value="send"></center>
            </form>';
           
if($action == on) {
    if ($valg == "Tilmeld") {
        $sql = "SELECT * FROM mailliste WHERE mail = '$mail'";
        $query = mysql_query($sql);
        $antal = mysql_num_rows($query);
        if ($antal == "") {
            $ip = $REMOTE_ADDR;
            $add = "insert into mailliste (id,navn,mail,ip,tid) values ('','$navn', '$mail', '$ip',now())";
            mysql_query($add);
            echo $mail . " blev tilføjet";
        }
        else {
            echo $mail . " er allerede tilmeldt";
        }
    }
   
    if($valg == "Afmeld") {
        $delete = "Delete from maillist where mail = '$mail'";
        mysql_query($delete);
        echo $mail . " blev fjernet fra listen";
    }
}
Avatar billede oleoleo1 Nybegynder
02. februar 2008 - 00:19 #7
kakster: tak for eksemplet med det løser dog ikke mit problem. Problemet er kort og godt hvordan jeg refresher siden og nulstiller alle variabler undtagen $error variablen...
Avatar billede mstorgaard Praktikant
02. februar 2008 - 07:06 #8
Prøv at sætte din kode herind.
Avatar billede oleoleo1 Nybegynder
02. februar 2008 - 09:28 #9
//Database connection etc..(virker som det skal)
           
//hvis der er indtastet en email..
        if (isset($_POST['email']))                    {   
            $ny_email = $_POST['email'];   
           
            unset($_POST['email']);    //(virker dog ikke efter hensigten)
                                   
            if( ereg("[-0-9a-zA-Z!#$%&*+/=?^_&#65533;{|}~.]+@[-0-9a-zA-Z!#$%&*+/=?^_&#65533;{|}~.]+", $ny_email)) { //hvis email er ok
           
         
                //tjek om bruger allerede er i databasen
                $tjek_email = mysql_query("SELECT email FROM emails WHERE email = '".$ny_email."'");
                $num = mysql_numrows($tjek_email);
           
                if(0 != $num){ //hvis den email er der i forvejen
               
                    print "Emailen findes allerede på listen\n";
                    print "Vil du afmelde nyhedsbrevet?\n";  //problemet er ikke her, da der kommer ny submit..
                   
?>
                    </br>
                   
                   
                    <!--==========html==================================-->
                    <input type="submit" name="fjern_email" value="Fjern email :("/>
                    <input type="submit" name="cancel" value="Selvfølgelig ikke!!!  :)"/>

<?php

                } else {
               
                    //opret email
                    mysql_query("INSERT INTO emails (`email`,`dato`)
                    VALUES ('".$ny_email."', NOW())");
                    mysql_close($link);
                   
                    print "Emailen: ".$ny_email." er nu tilføjet til listen\n";
                   
               
                }   
           
           
            } else {
           
                print "Det indtastede er ikke en gyldig emailadresse\n";
               

                //********PROBLEM HER! (ved ikke om nedestående kode virker optimalt, det var noget jeg fandt) men jeg vil
                                // i hvertfald gerne have en $error variabel med f.eks.
                                //$error = "Det indtastede er ikke en gyldig emailadresse\n";
                                //som jeg kan tjekke på i toppen og udskrive hvis (!empty($error))

                print "<meta http-equiv=\"Refresh\" content=\"0;url=".$HTTP_SERVER_VARS[PHP_SELF]."\">";
                //unset($_POST['email']);
           
       
            }
       

        } else {
       
?>
                   
            <!--html ==========================-->
            <body id="emailliste" onload="">
       
            <form method="post" action="?page=emailListe">
       
            <label for="t1"> Indtast email:</label>
            <br />
           
            <input type="text" name="email"/><br />
           
            <h1>Tilmeld eller afmeld nyhedsbrev.</h1></br>

               
            </form>
               
    </body>

   
                       
<?php
                   
        }

?>
   
        </html>
Avatar billede oleoleo1 Nybegynder
02. februar 2008 - 11:16 #10
well har løst problemet;

<form method="post" action="?page=emailListe">
<input type="hidden" name="error" value="<?php print $error;?>" />
</form>
Avatar billede oleoleo1 Nybegynder
02. februar 2008 - 11:17 #11
nemli' ja.
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