Ú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
). 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.
Írd le, ha valamelyik rész nem világos.Sk8erPeter
Új hozzászólás Aktív témák
- Lenovo ThinkPad T480s i7 8650U 16GB DDR4 256GB M.2 NVME QHD (2560x1440)
- UniFi U6-LR, U6-Lite, UAP-AC-PRO, 4xUF-RJ45-10G, 22 patch cable
- Eladó Konfig I7-6700 16GB DDR4 128GB SSD 500GB HDD GTX1660 6GB!
- AMD Gamer Config: Ryzen 5 5600X, 32 GB DDR4, RX 6750 XT 12GB, 1TB SSD+2TB HDD
- Gainward GeForce GTX 1070 Phoenix 8GB