ugrás a tartalomhoz

Változók nem kerülnek be a PHP-vel generált emailbe

Anonymous · 2005. Dec. 9. (P), 11.21
Légyszíves segítsen az, aki tudja, mi lehet a gond. Tehát; adott egy egyszerű php levélküldő, amely a címzettnek annak rendje-módja szerint szépen generálja is az email-t, egyetlen apró SZÉPSÉGHIBÁVAL. Sajnos, a változókat (és csak a változókat, tehát a beviteli mezők értékeit) nem küldi el. A fix, keretszöveget igen.

Mi a legvalószínűbb baj, ebben az esetben? Már régóta kínlódom vele, s már unom. :(

Várom valami mesterember szíves válaszát! Üdv, Péter
 
1

Autószerelő példa

janoszen · 2005. Dec. 9. (P), 11.24
A kedvenc példámmal jövök:

Felhívod az autószerelőt:
- Helló, te, nem megy a kocsim.
- Na, és mit csinál?
- Há nem indul.

Érted a célzást? Honnan tudjuk mi, hogy a Te levélküldődnek mi baja, ha az ég világon semmi információval rendelkezünk róla?

A MINIMUM ilyenkor az, hogy kiteszed a forráskódot.
2

register_globals

attlad · 2005. Dec. 9. (P), 11.36
http://weblabor.hu/forumok/temak/10671

Ha TEXTAREA tag ez: <textarea name="message">
PHP kód ez: $_REQUEST['message'] és nem ez: $message
3

<Nincs cím>

Anonymous · 2005. Dec. 9. (P), 12.05
Bocsi (JOGOS A LESZÚRÁS), tehát a kód:
<input name="name" type="text" id="name" size="30" maxlength="100">
<form action="mail.php" method="post" name="form1" 

<?PHP
$to = "xxx##kukac##yyy.hu";
$msg .= "Üzenet érkezett\n\n";
$msg .= "Regisztráló neve: $name\n";
mail($to, $name, $msg, "From: xxx\nReply-To: $email\n");
?>
Köszönöm a gyors választ (okat)
Péter
4

Igen...

janoszen · 2005. Dec. 9. (P), 12.12
Az előtted levő hozzászólónak volt igaza. $_REQUEST['name'] kell nem $name. (Ja, es a reply-to mezőben is $_REQUEST['email'])
5

form szerkezet és colorer

zsepi · 2005. Dec. 9. (P), 12.17
javasolnám a colorer bbcode jelölő használatát
Ha az a kód, amit ide kitettél, a probléma egyszerű: az input-od a form-on kívül van, illetve maga a form nincs bezárva. Ja, és valószínűleg register_globals = Off

helyesen:

<form action="mail.php" method="post" name="form1">
<label> Regisztráló neve <input name="name" type="text" id="name" size="30" maxlength="100"></label>
<input type="submit" value="levél küldés">
</form>
<?PHP
$to = "xxx##kukac##yyy.hu";
$msg .= "Üzenet érkezett\n\n";
//$msg .= "Regisztráló neve: $name\n";
$msg .= "Regisztráló neve: $_POST['name']\n";
mail($to, $name, $msg, "From: xxx\nReply-To: {$_POST['email']}\n");
?>
9

Összefűzés

Jano · 2005. Dec. 9. (P), 13.11
Lehet ez csak kódrészlet, de javaslom, hogy ha nem akkor egy pici javítást még tegyél meg: a $msg először legyen valahol alapból definiálva, kapjon pl egy üres stringet értékként és csak utána kezdj el hozzáfűzni. Gondolom nálad kivannak kapcsolva a figyelmeztetések különben szólna a PHP. Ez nem nagy hiba, csak hibalehetőség.
14

email injection

wiktor · 2005. Dec. 10. (Szo), 01.32
mail($to, $name, $msg, "From: xxx\nReply-To: $email\n");

Itt az xxx-et, es az $email-t gondosan ellenőrizd le egy regexp-pel, mert könnyen spamelhetnek a szerveredről.

Részletek: http://securephp.damonkohler.com/index.php/Email_Injection
6

<Nincs cím>

Anonymous · 2005. Dec. 9. (P), 12.56
Köszi mindenkinek, de sajnos mind a 2 verzióra kiadott egy hibaüzenetet, mely a következő volt:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING ..on line 70

a 70. sor pedig: $msg .= "Regisztráló neve: $_POST['name']\n";
(vagy akár a REQUEST -es verzió)

Ez a helyzet, s nem tudom, mi van ilyenkor.Van még ötletetek? Azért az eddigieket köszönöm. Péter
7

ez?

janoszen · 2005. Dec. 9. (P), 13.04
$msg .= "Regisztráló neve: " . $_POST['name'] . "\n";


Erre mit mond?

Egyébként légy szíves BBCode jelölőket használni.
10

<Nincs cím>

Anonymous · 2005. Dec. 9. (P), 13.20
Nálad volt az IGAZSÁG, én sajnos nem vagyok benne túlzottan járatos, még biztos elkínlódtam volna vele napestig :) ! Így tökéletesen működik minden. Nagyon szépen köszönöm a segítséged, illetve segítségeteket!!! Szép napot,

Péter
8

Csak sima változókat tudJa

Jano · 2005. Dec. 9. (P), 13.06
A PHP értelmező csak a sima változókat tudja a stringen belül kicserélni, az asszociatív tömböket már nem. Használt a string összefüzű .-ot.

<?php
$msg .= "Regisztráló neve: ".$_POST['name']."\n";
Én inkább mindig így írom, hogy ebből ne legyen hiba.
11

illetve...

VBala · 2005. Dec. 9. (P), 13.31
Ha csak egydimenziós a tömb, akkor azt is kicseréli, csak akkor így kell írni:
<?php $msg .= "Regisztráló neve: $_POST[name]\n";
Viszont a későbbi bonyodalmak (pl. többdimenziós tömb esetén) elkerülése érdekében tényleg érdemes megszakitani a stringet.
13

Ez is warning

Jano · 2005. Dec. 9. (P), 16.00
Ok, ezt nem tudtam. Viszont aszoc tömböknél ha a kulcsot nem mint string jelölöd akkor is figyelmeztetést dob ha engedélyezve van.

Régebben én se fordítottam erre nagy figyelmet, de nem rég letöltöttem egy ingyenes kodót valami feladat megoldásához, és otthoni gépen ami tesztelésre van beállítva annyi notice-t dobott, hogy nem lehetett értelmesen használni a cuccot.
12

Jó gyakorlat, de tömböt is tud értelmezni

zsepi · 2005. Dec. 9. (P), 13.41
De ez is működik
<?php
	$x = array();
	$x['teszt'] = array();
	$x['teszt']['a'] = 'teszt, a';
	echo "Regisztráló neve: {$x['teszt']['a']}\n";
?>
ld. http://php.net/types.string#language.types.string.parsing.complex