Avatar billede nolleren Nybegynder
07. marts 2008 - 10:57 Der er 8 kommentarer og
1 løsning

Ting virker i Firefox men ikke i IE og Opera!

Hej Experten! Jeg har det her problem som jeg synes at få hver gang jeg skriver PHP. Mine ting virker i FF men ikke i IE. Som regel når jeg ikke at opdage det før det jeg har lavet bliver forholdsvist komplekst! Men måske i kan se hvad jeg gør forkert.

Koden - check_email.php:
<?
    if(isset($_POST['submit'])){
        include '../admin/dbconnect.php';
        $query = mysql_query("SELECT * FROM teamfreeflow_emails") or die(mysql_error());
        $email = strtolower($_POST['email']);
        $date = date("y-m-d");

        function check_email_address($email){
            if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
            // Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
                return false;
            }

            $email_array = explode("@", $email);
            $local_array = explode(".", $email_array[0]);

            for ($i = 0; $i < sizeof($local_array); $i++) {
                if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
                    return false;
                }
            }

            if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
                $domain_array = explode(".", $email_array[1]);
                if (sizeof($domain_array) < 2) {
                    return false; // Not enough parts to domain
                }
                for ($i = 0; $i < sizeof($domain_array); $i++) {
                    if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
                        return false;
                    }
                }
            }
            return true;
        }       

        if(check_email_address($email)){
            while($row = mysql_fetch_assoc($query)){
                if($row['mail'] == $email){
                    mysql_query("DELETE FROM teamfreeflow_emails WHERE mail='$email'") OR DIE (mysql_error());
                    header("Location: ../kontakt.php?v=10");
                    exit;
                }
            }
            if(!$afmeld){
                mysql_query("INSERT INTO teamfreeflow_emails (mail, last_sent) VALUES ('$email', '$date')") OR DIE (mysql_error());
                header("Location: ../kontakt.php?v=11");
                exit;
            }
        }else{
            header("Location: ../kontakt.php?v=12");
            exit;
        }
    }else{
        header("Location: ../kontakt.php");
        exit;
    }
?>

Koden - kontakt.php:

<?
if(!empty($_GET['v'])){
    $validNum = $_GET['v'];
   
    if($validNum == 10){
        $validation = 'Du er nu afmeldt vores nyhedsbrev!';
    }else if($validNum == 11){
        $validation = 'Du er nu tilmeldt vores nyhedsbrev!';
    }else if($validNum == 12){
        $validation = 'Din email er ikke korrekt. Prøv igen!';
    }
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Team Freeflow - Forget gravity</title>
<link rel="stylesheet" href="css/style.css" />
</head>

<body>
<div id="container">
    <div class="left">
        <img src="img/logo_left.jpg" alt="Team Freeflow" /><a href="index.php"><img src="img/button_forside.jpg" alt="FORSIDE" /></a><a href="vision.php"><img src="img/button_vision.jpg" alt="VISION" /></a><a href="omholdet.php"><img src="img/button_omholdet.jpg" alt="OM HOLDET" /></a><a href="kontakt.php"><img src="img/button_kontakt.jpg" alt="KONTAKT" /></a>
    </div>
    <div class="right">
        <div class="content">
            <h1><img src="img/heading_kontakt.gif" alt="Kontakt"/></h1>
            <p>Patrick Hansen<br />
            Tjørnehegnet 27<br />
            2680 Solrød str.<br />
            56 14 74 08<br />
            mail@teamfreeflow.dk</p>
           
            <p><strong>Nyhedsbrev:</strong><br />
            Hvis klubben har fanget din interesse så tilmeld dig vores nyhedsbrev.<br />
            I dette vil du få nyheder om holdet, events, samt opdateringer på sitet.</p>
            <form action="php/check_email.php" method="post">
                <table cellspacing="0">
                    <tr>
                        <td>
                            <input type="text" name="email" class="newsletter_input" />
                        </td>
                        <td class="newsletter_buttons">
                            <input type="image" name="submit" value="submit" src="img/newsletter_button.jpg" alt="Tilmeld / Afmeld" width="120" height="28" />
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <div><strong><? echo $validation; ?></strong></div>
                        </td>
                    </tr>
                </table>
            </form>
        </div>
    </div>
    <div class="admin"><a href="admin/">Admin</a></div>
</div>
</body>
</html>

Eksemplet:
http://theportfolio.dk/projects/team_freeflow/kontakt.php

Det den skal gøre er at sende den mail man indtaster videre til check_email.php og derefter sende fejlmeldingen tilbage til kontakt.php ..

På forhånd tak.
Avatar billede erikjacobsen Ekspert
07. marts 2008 - 11:07 #1
"virker ikke" - i hvilken betydning?
Avatar billede nolleren Nybegynder
07. marts 2008 - 11:13 #2
I FF kommer der en fejlmelding. Hvis ingen fejl smider den den indtastede mail ind i arrayet. Fejlmeldingen skriver en af disse 3 ting:

if($validNum == 10){
    $validation = 'Du er nu afmeldt vores nyhedsbrev!';
}else if($validNum == 11){
    $validation = 'Du er nu tilmeldt vores nyhedsbrev!';
}else if($validNum == 12){
    $validation = 'Din email er ikke korrekt. Prøv igen!';
}

I IE smider den hverken noget i DB'en eller melder fejlmeddelsen!
Avatar billede nolleren Nybegynder
07. marts 2008 - 11:13 #3
"..indtastede mail ind i arrayet"
hov! mente ind i databasen!
Avatar billede erikjacobsen Ekspert
07. marts 2008 - 11:31 #4
Du erstatter bare
    if(isset($_POST['submit'])){
med
    if(isset($_POST['email'])){

(<input type="image" ...> kan være lidt drilsk)
Avatar billede nolleren Nybegynder
07. marts 2008 - 13:05 #5
Mange tak! Men hvad så hvis jeg har 2 billedeknapper hvor den ene skal sende og den anden skal gemme eksempelvis?
Det virkede. Bare svar! Så får du point.
Avatar billede erikjacobsen Ekspert
07. marts 2008 - 13:09 #6
Jeg samler slet ikke på point, tak.

Du kan lave et eksperiment med en form med GET:  <form action="..." method="get">  og de to knapper med forskellige navne. Så kan du i adresselinien se hvad der sendes tilbage i forskellige browsere.
Avatar billede nolleren Nybegynder
07. marts 2008 - 13:51 #7
Okai. Men hvad gør den så med resten af tingene? Smider den ikke også det med i querystringen?
Avatar billede nolleren Nybegynder
07. marts 2008 - 13:51 #8
.
Avatar billede erikjacobsen Ekspert
07. marts 2008 - 14:01 #9
Jo, men det er bare en test. Når du ved hvad der sker, går du tilbage til method="post"
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