Keresés

Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz zzolika #5393 üzenetére

    Az eleve nem jó, hogy a PHP-kódodat körbeveszik a szokásos HTML-tagek - felesleges, ez háttérben zajló folyamat kell, hogy legyen, mert itt most nem akarsz semmit kiíratni.

    Az eddigi JavaScriptes cuccot is úgy, ahogy van, kihagyhatod, elég, ha ezt rábízod a PHP-re. Az is feleslegesnek tűnik, hogy a kiszámolt értéket egy readonly text mezőbe bemásold (vagy nem tudom, mi a célod ezzel).
    Ez pedig nem jó:
    <SCRIPT LANGUAGE="JavaScript">
    mert a language attribútum régóta deprecated.
    Inkább így:
    <script type="text/javascript">
    De mondom, jelen esetben ezt a JavaScriptes kódot úgy, ahogy van, ki lehet hagyni.

    Pont a lényeget, tehát a radio buttonöket nem másoltad be, de gondolom valami ilyesmi:

    <input type="radio" name="blabla" value="Első" />
    <input type="radio" name="blabla" value="Második" />

    Ezt PHP-oldalról is látod:
    if( isset($_POST['blabla']) ){
    //...
    }

    De most látom, hogy az eddigi formod GET metódussal működik, nem POST-tal, ez nem tudom, esetedben indokolt-e, de ebben az esetben így éred el:

    if( isset($_GET['blabla']) ){
    //...
    }

    A kódodban van egy ilyen: if(isset($uzenet)) , de az $uzenet változó nincs sehol beállítva. Gondolom ehelyett $email_message akart ott szerepelni. (Remélem a register_globals nincs bekapcsolva...)

    Tehát akkor vegyük azt, hogy így néz ki a formod:

    <form method="get" action="">
    <div>
    Első: <input type="radio" name="blabla" value="Első" />
    Második: <input type="radio" name="blabla" value="Második" />
    </div>
    </form>

    (legegyszerűbb példával)

    A mail_kuld_szamol.php fájlodat ez alapján átalakíthatnád így is (ez szintén nem a legszebb, inkább legegyszerűbb megoldás):

    <?php
    function mail_kuld_szamol($selected_value){
    // ha nincs beállítva, vagy üres a változó, akkor egyből visszatérünk
    if( empty($selected_value) ){
    return false;
    }
    $email_to = "cimzett@cimzett.hu";
    $email_subject = "uzenet temaja";

    $price = 0;


    if($selected_value == 'tökömtudja'){
    $price = 123123;
    }
    else{
    $price = 654;
    }

    $email_message = 'Kiválasztott: '.$selected_value.', ár: '.$price;
    $headers = 'From: '.'automata_felado@cimzett.hu'."\r\n".
    'Reply-To: '.'automata_felado'."\r\n" .
    'X-Mailer: PHP/' . phpversion();
    $email_message = str_replace("__","\n",$email_message);

    return @mail($email_to, $email_subject, $email_message, $headers);
    }

    Az, hogy itt nem tettem záró PHP-taget, az teljesen szándékos! Erről bővebb infót olvashatsz a PHP hivatalos oldalán is, ez egy megszokott dolog, ha egy fájlban kizárólag PHP-kódok vannak, és nem akarod, hogy esetleges whitespace-ek gondot okozzanak.

    A kód persze csak példajellegű, de láthatod, hogy PHP-oldalon is kiszámolhatók a szükséges értékek, nem JavaScripttel, ami már csak azért is jó, mert így a felhasználó még a forrásódból sem láthatja, hogy számolod az értékeket (nem mintha nehéz lenne kitalálni, hogyan számolsz nettóból bruttó árat :D). Persze a függvénybe ennél jóval értelmesebb ellenőrzések lennének szükségesek.

    Aztán az index.php-be pl. így:

    <?php
    if(!empty($_GET['blabla'])){
    require_once('mail_kuld_szamol.php');
    mail_kuld_szamol($_GET['blabla']);
    }
    ?>
    <!DOCTYPE ......>
    <html>
    ......
    </html>

    De tényleg átmehetnénk a PHP topicba. :D
    Írd le, ha valamelyik rész nem világos.

    Sk8erPeter

Új hozzászólás Aktív témák