ugrás a tartalomhoz

Űrlap kitöltés visszajelzése, hogyan?

tashubanya · 2010. Feb. 2. (K), 01.27
Sziasztok!

Van egy oldalam rajta a legegyszerűbb levélküldő űrlappal, melyet autodidakta oldottam meg. Egészen addig sikerrel, amíg nem akartam azt elérni, hogy az érdeklődők adjanak meg minden adatot a sikeres kapcsolat felvételhez.

A php-m a következő:
<?php

$Email = iconv("UTF-8", "ISO-8859-2", $Email);

$ToEmail = iconv("UTF-8", "ISO-8859-2", "csertantivadar##kukac##csertangaz.hu");

$ToName = iconv("UTF-8", "ISO-8859-2", "Csertán Tivadar");

$Szoveg = iconv("UTF-8", "ISO-8859-2", $Szoveg);

$Nev = iconv("UTF-8", "ISO-8859-2", $Nev);

$Targy = iconv("UTF-8", "ISO-8859-2", $Targy);

$mailtome = mail($ToName." <".$ToEmail.">",$Targy, $Szoveg, "From: ".$Nev." <".$Email.">");

$site = iconv("UTF-8", "ISO-8859-2", $site);


if (!Email.length || Email.indexOf("@") == -1 || Email.indexOf(".") == -1) {
Visszajelzes = "Kérem, adjon meg egy valódi email címet!";
} 
else if (!Nev.length) {
Visszajelzes = "Kérem, adja meg a nevét!";
} 
else if (!Targy.length) {
Visszajelzes = "Az üzenetnek nincs tárgya!";
} 
else if (!Szoveg.length) {
Visszajelzes = "A levél nem tartalmaz szöveget!";
} 
else {
loadVariablesNum ("mail.php", "0", "POST");
Visszajelzes = "Levél küldése folyamatban...";
}


?>
.

Természetesen ez a kód nem az én tekervényeim szüleménye :S
Megértéseteket és segítségeteket köszönöm előre is!
 
1

még egy apróság...a html

tashubanya · 2010. Feb. 2. (K), 01.35
<h3><form action="mail.php" method="post" name="levelkuldes" id="levelkuldes" target="_self" >
<h3>Név:<br/>
<input name="Nev" type="text" id="Nev" style="font-family: Microsoft Sans Serif; font-size: 13px; color:#FFFFFF; width: 250px; " />
</h3>
<h3>E-mail:<br/>
<input name="Email" type="text" id="Email" style="font-family: Microsoft Sans Serif; font-size: 13px; color:#FFFFFF; width: 250px; " />
</h3>
<h3>Az üzenet tárgya:<br/>
<input name="Targy" type="text" id="Targy" style="font-family: Microsoft Sans Serif; font-size: 13px; color:#FFFFFF; width: 250px; " />
</h3>
<h3>E-mail szövege:<br/>
<textarea name="Szoveg" id="Szoveg" style="width: 250px; height: 100px; font-family: Microsoft Sans Serif; font-size: 13px; color:#FFFFFF; "></textarea>
</h3>
<input value="1" name="send" type="hidden" />
<h3>
<div class="buttons">
<button type="submit" class="positive" >
<img src="/images/email.png" alt="Küldés"/> Küldés
</button>
</div>
</form>
2

Le fognak tiltani

janoszen · 2010. Feb. 2. (K), 10.30
A kódod masszívan hibás, spamelni lehet a megfelelő változók manipulálásával amiért a tárhely-szolgáltatód rövid úton le fog tiltani. Inkább használj egy kész e-mail küldő libraryt, mint pl. a Swiftmailer.
3

hibák

a.d.a.m · 2010. Feb. 2. (K), 10.34
Feltételezem, ha lefuttatod a kódod a rakás hibaüzenetet dob, ha nem a php.ini-ben állítsd át a display_errors-t 1-re.

Amit én látok:
1) a 20,23,26,29 sorokban használni próbált .length, .indexOf JavaScript funkció és nem PHP-s.
2) a 20 sortól hibás az összes változó definiálása (szintén JavaScript típusú), a PHP-ban kell elé a $
3) a kódodból ítélve register_globals be van kapcsolva, talán szerencsésebb lenne a $_POST szuperglobális változón keresztül elérni az adatokat.
4) mit csinál ez a függvény: loadVariablesNum ?
5) ha a php kódod mindössze ennyi, akkor futtatásakor feltűnhetett, hogy minden esetben elküldi az e-mailt függetlenül a kitöltöttségtől, mert a mail() függvényt nem helyezted el az else ágban
6) a Visszajelzes változó adataival nem kezdesz semmit, nem iratod képernyőre és nem is adod át semmilyen függvénynek sem.
4

ActionScript

Poetro · 2010. Feb. 2. (K), 11.55
A kód inkább néz ki ActionScript kódnak, ugyanis abban van loadVariablesNum, ami betölt változókat egy fájlból, aminek tartalma GET formátumú elemeket tartalmaz, például:
params.txt
var1=hello&var2=goodbye&done=done
és a hozzá kapcsolódó ActionScript
target_mc.loadVariables("params.txt", 1);
5

ajajj

tashubanya · 2010. Feb. 3. (Sze), 14.44
Köszönöm az eddigi hozzászólásokat.
A php-be írt kódot egy fórumról vettem, ezek szerint előbb itt kellett volna kérdezni építő ötletek miatt.
6

jelenleg

tashubanya · 2010. Feb. 3. (Sze), 14.49
Jelenleg idáig jutottam, nem kevés segítséggel.
Bár így is megkapom a helytelenül kitöltött leveleket, de legalább megvan a látszat az ellenkezőjéről.

<?php

if ($_POST['Nev'] == '') {

	$errors['Nev'] = 'A név mezőt kötelező kitölteni.';

}
if (strlen(trim($_POST['Email'])) < 7 ) {

	$errors['Email'] = 'Az e-mail cím mezőbe valós e-mail címet kell megadni.';

}
elseif (preg_match( '/^[A-Z0-9._-]+##kukac##[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z.]{2,6}$/i' , $_POST['Email']) == 0) {

	$errors['Email'] = 'Az e-mail cím formátuma nem helyes.';

}

if ($_POST['Targy'] == '') {

	$errors['Targy'] = 'A tárgy mezőt kötelező kitölteni.';

}

if ($_POST['Szoveg'] == '') {

	$errors['Szoveg'] = 'A szöveg mezőt kötelező kitölteni.';

} 


if ($errors) {

	$Email = iconv("UTF-8", "ISO-8859-2", $Email);
	$ToEmail = iconv("UTF-8", "ISO-8859-2", "");
	$ToName = iconv("UTF-8", "ISO-8859-2", "");
	$Szoveg = iconv("UTF-8", "ISO-8859-2", $Szoveg);
	$Nev = iconv("UTF-8", "ISO-8859-2", $Nev);
	$Targy = iconv("UTF-8", "ISO-8859-2", $Targy);
	$mailtome = mail($ToName." <".$ToEmail.">",$Targy, $Szoveg, "From: ".$Nev." <".$Email.">");
	$site = iconv("UTF-8", "ISO-8859-2", $site);
	
	$redirect_to_url = "Location: hiba.html";
  header($redirect_to_url);
  exit();
	                                    
}
else {

	$redirect_to_url = "Location: ok.html";
  header($redirect_to_url);
  exit();

}


?>
Proclub! Hogyan értetted azt, hogy spamelni lehet?? Egyelőre nem kerestek meg a szolgáltatótól...
8

spam

janoszen · 2010. Feb. 3. (Sze), 18.06
Ha pl a From mezőt megfelelően manipulálom, tudok MIME injectiont csinálni, bele tudok írni a levél törzsébe és tudok pl egy sima plain text levélből HTML levelet csinálni, de az sem kizárt, hogy ki tudom kényszeríteni, hogy másnak menjen a levél (pl egy BCC hozzáadásával). Nem vagyok szakértő a témában, kicsit utána kéne olvasni, de mint rendszerüzemeltető gyakran gyűlik meg a bajom a mindenféle odapakolt escapelés nélküli mail függvényes scriptekkel. Csak idő kérdése, mikor találnak be a spambotok. Ergó, ha nem akarsz RFC 822-t olvasni, akkor jobb, ha egy kész libraryt használsz és bízol benne, hogy az azt megíró emberek nálad jobban értettek a levelezéshez.

Példa az exploithoz:
A From e-mail cím helyére beírom a következőt:
enmailem##kukac##endomainem.hu>
BCC: Spam Pista <pista##kukac##spam.hu>

Itt van a spam
.


Ez implementációtól függően simán eredményezheti, hogy a pista##kukac##spam.hu címre megy el a levél, a . miatt meg a levél többi részét kidobja a levelező a fenébe.
7

$errors

Poetro · 2010. Feb. 3. (Sze), 17.17
Most akkor akkor küldöd el a leveleket ha vannak hibák? Vagy akkor ha nincsennek?
mert a
if ($errors) {

arra utal, ha vannak hibák akkor megy a levél.

Proclub pedig arra utalt, ha megfelelő formátumú paramétereket ad át a formodnak, akkor nem csak neked, de akárki másnak is el tudja küldeni a levelet, ergo akárkit tud SPAMelni a rosszindulatú felhasználó.
9

ajajajajjj

tashubanya · 2010. Feb. 3. (Sze), 22.25
Köszönöm.
Igyekszem mielőbb javítani a hibákat és jobban belemerülni a témába. Mielőtt több ezer embert őrületbe kergetnek a spam-ek.
10

akkor most ez van

tashubanya · 2010. Feb. 4. (Cs), 00.45
if ($errors) korrigálva, elvileg ebből a szempontból rendben van.

<?php
if ($errors){

	$redirect_to_url = "hiba.html";
  header($redirect_to_url);
  exit();
	                                    
}
else {
	$Email = iconv("UTF-8", "ISO-8859-2", $Email);
	$ToEmail = iconv("UTF-8", "ISO-8859-2", "");
	$ToName = iconv("UTF-8", "ISO-8859-2", "");
	$Szoveg = iconv("UTF-8", "ISO-8859-2", $Szoveg);
	$Nev = iconv("UTF-8", "ISO-8859-2", $Nev);
	$Targy = iconv("UTF-8", "ISO-8859-2", $Targy);
	$mailtome = mail($ToName." <".$ToEmail.">",$Targy, $Szoveg, "From: ".$Nev." <".$Email.">");
	$site = iconv("UTF-8", "ISO-8859-2", $site);

	$redirect_to_url = "ok.html";
  header($redirect_to_url);
  exit();

}
?>
Ami a sablonok használatát illeti, letöltöttem a swiftmailer-t és a php mailer-t is, de sajnos nem egészen értem, hogyan kellene alkalmazni ezeket...nomeg szeretem én csinálni a dolgokat, hiszen ebből tanulok, azt hiszem....az informatikusok pedig legalább tudnak az amatőrökön vidulni/bosszankodni :D
Esetleg valahol használható magyar nyelvű leírás valamelyik sablon használatához????
11

Angol

janoszen · 2010. Feb. 4. (Cs), 09.31
Az angol nélkül sehova nem fogsz jutni ebben a szakmában sajnos, mert a dokumentációk 99%-a angolul van és senki nem fog olyan doksit fordítani, ami 2-3 havonta elavul. A PHP doksit is föladták egy ponton.
12

sprehhelek én inglis

tashubanya · 2010. Feb. 4. (Cs), 14.08
Az angol nyelv nem idegen tőlem.
Nem kell nekem ez a szakma, csak magamnak dolgozok, szerencsére :D
Ettől függetlenül magyar honban díjazom a magyar doksikat...csupán erre gondoltam ;)