Avatar billede bars Nybegynder
01. april 2008 - 14:05 Der er 14 kommentarer og
1 løsning

Submit for og send en mail

Hej

Jeg har nu siddet det meste af dage og bøvlet med denne form, så nu vil jeg prøve om nogen kan hjælpe lidt.

Situationen er at jeg har en form som jeg validerer som egentlig virker efter hensigten, men hvis jeg tilføjer en mail() php funktion, så sender siden en mail med det  samme den loades, også selvom mail funktionen er pakket ind i en betingelse som ikke er opfyldt når siden loades.

Sådan ser det ud:

<script type="text/javascript">

    function checkForm()
    {
        var objForm = document.getElementById("payment");
        total = objForm.cardno.value.length + objForm.cvc.value.length;
        cardno_js = objForm.cardno.value.length;
        <? $cardno_php = "".cardno_js ;?>
        alert(<? echo $cardno_php; ?>);
       
        if(objForm.cardno.value.length != 16 || objForm.cvc.value.length != 3)
        {
            alert("Indtastede oplysninger er ikke korrekte");
            return false;
        }
       
        else
        {
            alert("Form submittes");
           
           
            <? if($cardno_php = 16){?>
                alert("test");
                objForm.submit();
                <?
                $a = "soren@je.dk";
                $b = "juhuu - en mail";
                $c = "dette er en mail";
               
                $skodbolle = "ma";
                $skodbolle .= "il($a, $b, $c)";
           
                mail($a, $b, $c);
                }
                else
                {
                    ?>alert("else");<?
                }
                ?>
           
        }
       
    }


<form action="https://ssl.ditonlinebetalingssystem.dk/auth/default.aspx"  method="post" id="payment">
<table cellspacing="0" cellpadding="2" border="0" width="100%">
    <tr>
        <td>Kortnummber:</td>
        <td><input type="text" id="cardno" name="cardno" maxlength="16" style="BORDER: 1px solid; color: #ffffff; BACKGROUND-COLOR: #000000" onkeyup="this.value=this.value.replace(/[^\d]/g,'');" /></td>
    </tr>
   
    <tr>
        <td>Kontrolnummer:</td>
        <td><input type="text" name="cvc" maxlength="3" style="BORDER: 1px solid; color: #ffffff; BACKGROUND-COLOR: #000000; width: 50px" onkeyup="this.value=this.value.replace(/[^\d]/g,'');" /></td>
    </tr>
    <tr>
        <td align="left" valign="bottom"><input type="button" value="Tilbage" onclick="history.back()"></td>
        <!-- <td align="right" valign="bottom"><input type="submit" value="Gennemf&oslash;r betaling" /></td> -->
        <td align="right" valign="bottom"><input type="button" value="Gennemf&oslash;r betaling" onclick="checkForm()" /></td>
    </tr>
</table>

</form>
Avatar billede w13 Novice
01. april 2008 - 14:06 #1
$cardno_php = 16
skal vel være:
$cardno_php == 16
skal den ikke? :)
Avatar billede bars Nybegynder
01. april 2008 - 14:40 #2
Hvis jeg sætter to = springer scriptet ned i min else, så det er ikke det det gør problemer
Avatar billede w13 Novice
01. april 2008 - 14:52 #3
Men hvis du skriver:
if($cardno_php = 16)
så tjekker den ikke, om $cardno_php er lig med 16, så tildeler den $cardno_php værdien 16 og tjekker, om det er større eller mindre end 0 (fordi andet end 0 svarer til "true").
Avatar billede dkfire Nybegynder
01. april 2008 - 15:22 #4
Det ser ud til at du har misforstået forskellen mellem javascript og PHP.
PHP køres på serveren. Dvs at din php kode køres hver gang din side loades.'

Javascript kører i browseren og har intet at gøre med hvilke php kode som køres på serveren.

Du tror at din php kode først køres når din javascript funktion ccheckForm() køres, men det er lagt fra sandt. Din php kode køres når siden loades uanset om der ligger noget javascript rundt om den eller ej.
Avatar billede bars Nybegynder
01. april 2008 - 15:35 #5
kender du så en måde hvor jeg kan tjekke min formular, og når den er korrekt udfylt så sendes der en mail?
Avatar billede bars Nybegynder
01. april 2008 - 16:05 #6
så vil det vel heller ikke hjælpe at gøre sådan...

    $a = "soren@je.dk";
    $b = "juhuu - en mail";
    $c = "dette er en mail";

    if($checker = "ok")
    {
    mail($a, $b, $c);
    }

og så erklære denne php variabel nede i mit javascript validator

        if(objForm.cardno.value.length != 16 || objForm.cvc.value.length != 3)
        {
            alert("Indtastede oplysninger er ikke korrekte");
            return false;
        }
       
        else
        {
            <? $checker = "ok"; ?>
            objForm.submit();
           
        }
Avatar billede w13 Novice
01. april 2008 - 16:12 #7
else
        {
            <? $checker = "ok"; ?>
            objForm.submit();
           
        }

vil ikke kun sætte $checker, hvis JavaScripten kører "else"-delen.
$checker vil altid blive sat, fordi PHP er fuldstændig ligeglad med JavaScript, som dkfire er inde på.

Og da PHP kun køres, når siden loades, kan det jo også være helt ligemeget?
Avatar billede dkfire Nybegynder
01. april 2008 - 16:23 #8
Du kan IKKE får kørt noget php kode med javascript.
Avatar billede bars Nybegynder
01. april 2008 - 16:25 #9
Puuha, så skal jeg til at igan med noget database sammen med php for at gemme mine oplysninger - og så sende en mail fra en anden side.
Avatar billede dkfire Nybegynder
01. april 2008 - 16:45 #10
Hvad er det du prøver på at lave ??
For lige nu sender du brugeren til https://ssl.ditonlinebetalingssystem.dk/auth/default.aspx når formen submittes, og det ligner en online betalingsløsning.
Avatar billede bars Nybegynder
02. april 2008 - 08:49 #11
det er det også, bare noget meget simpelt hvor man udfylder en form om hvad man vil have osm så regner en pris, hvilket man kan betale med dankort. Så vil jeg gerne sende en mail til kunden med en bestilling hvor der står hvad der er bestilt.
Avatar billede w13 Novice
02. april 2008 - 09:17 #12
Men dette kan du ikke gøre, før en ny side indlæses (fordi PHP jo kun køres, når en side loades), medmindre du bruger AJAX.
Avatar billede dkfire Nybegynder
02. april 2008 - 13:10 #13
Normalt vil du få et svar tilbage fra betalingssiden, hvor du så kan sende din mail, således er du også sikker på at kunden rent faktisk fik købt det han/hun bestilte.
Avatar billede dkfire Nybegynder
09. april 2008 - 18:14 #14
Er du kommet videre ??
Har du fået løst dit problem ??
Har vores svar kunne hjælpe dig ??
Avatar billede bars Nybegynder
10. november 2010 - 10:22 #15
Jeg fik det til at virke til sidst, kan ikke helt huske omstændighederne mere.
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