ugrás a tartalomhoz

űrlapok adatainek 2x-i küldése

bence04 · 2010. Aug. 5. (Cs), 10.36
sziasztok
egy olyan problémám van hogy van egy hírlevélre való feliratkozás formom:

<div class="hirlevel">
<form name="hirlevel" method="POST" action="megerosit.php" > 
Név:<input type="text" name="nev"><br> 
E-mail:<input type="text" name="email"><br> 
<input type="submit" name="submit" value="Feliratkozás"> 
</form>
</div>
Ha rákattintunk a feliratkozásra akkor végrehajtódik a megerosit.php
ami így néz ki:

<?php

$email = $_POST[email];
$nev = $_POST[nev];
$subject = "Hírlevél megerősítése"; 
$message = "Név: $nev\nE-mail: $email\n\n\nHa az adatok jók akkor kattintson ide hogy megerősítse a hírlevélre való feliratkozását vagy ha a link nem működik akkor másolja be a böngésző címsorába. \n\n\nhttp://www.weblapalapok.hostzi.com/uzenet.php"; 

mail("$email", iconv("UTF-8", "ISO-8859-2", $subject), iconv("UTF-8", "ISO-8859-2", $message), "From: info##kukac##weblapalapok.hostzi.com");
echo "Sikeresen feliratkozott a hírlevélre";

?>
és itt ezt elküldi az E-mailre annak aki feliratkozott és utána jön a megerősítés rész az uzenet.php
ami így néz ki:

<?php

  

$nev = $_POST[nev];
$email = $_POST[email];
$subject = "Feliratkozás a hírlevélre"; 
$message = "Név: $nev \nEmail: $email";   
  

mail("info##kukac##weblapalapok.hostzi.com", iconv("UTF-8", "ISO-8859-2", $subject), iconv("UTF-8", "ISO-8859-2", $message), "From: $email");
echo "Sikeresen feliratkozott a hírlevélre";
?>
ez küldi el az én E-mailemre, hogy feliratkoztak de hiába van post a levélbe nem jön adat gondolom azért mert nincs űrlap amiből kiolvasná mert elötte volt egy php van ötletetek hogy hogyna lehetne az adatokat átvinni ebbe a php utasításba is?

és ha lehet valami könnyű mert php-ban nem nagyon vagyok otthon :S
Bence
 
1

Ez nem így kéne

nvyktor · 2010. Aug. 5. (Cs), 11.31
Szia!

Ezt nem így kéne csinálni... Mivel a feliratkozás, és a levél elküldése valamint a levél felhasználó általi megnyitása és a hivatkozásra kattintás adott esetben nem is egy gépen történik, ezért nem jó a megoldásod.

Azért sem jó, mert a levéllel nem küldesz semmilyen azonosító értéket.

És végül azért sem jó, mert ha hivatkozásra kattintasz, akkor nem lesz POST változód.

Vagyis, a megoldás:
A hivatkozásodnak add át a megfelelő értékeket, vagyis megerosit.php:

<?php  
$email = $_POST['email'];  
$nev = $_POST['nev'];  
$subject = "Hírlevél megerősítése";   
$message = "Név: $nev\nE-mail: $email\n\n\nHa az adatok jók akkor kattintson ide hogy megerősítse a hírlevélre való feliratkozását vagy ha a link nem működik akkor másolja be a böngésző címsorába. \n\n\nhttp://www.weblapalapok.hostzi.com/uzenet.php?nev=$nev&email=$email";   
mail("$email", iconv("UTF-8", "ISO-8859-2", $subject), iconv("UTF-8", "ISO-8859-2", $message), "From: info##kukac##weblapalapok.hostzi.com");  
echo "Sikeresen feliratkozott a hírlevélre";  
?> 
És ehhez az uzenet.php:

<?php  
$nev = $_GET['nev'];  
$email = $_GET['email'];  
$subject = "Feliratkozás a hírlevélre";   
$message = "Név: $nev \nEmail: $email";     
mail("info##kukac##weblapalapok.hostzi.com", iconv("UTF-8", "ISO-8859-2", $subject), iconv("UTF-8", "ISO-8859-2", $message), "From: $email");  
echo "Sikeresen feliratkozott a hírlevélre";  
?>
Ez az egyszerűbbik megoldás, ami az általad írt kódra épül.

De mivel ma már annyira ránktör a lábrázás a személyiségi jogoktól, ezért az alábbi megoldás kicsit jobb, ezt csak pontokba szedve írom le:

- csinálsz egy adatbázist, a következő mezőkkel: id, nev, email, aktiv
- amikor ő rákattint, lekéred az utolsó id-t, növeled eggyel, beteszed az adatait adatbázisba,
- a megnövelt id-t és pl az e-mail és a név kombinációját beleteszed egy másik idba így:
$id2 = md5($nev.$email);
- ezt küldöd ki a levélben, vagyis a hivatkozás:
$message = "Név: $nev\nE-mail: $email\n\n\nHa az adatok jók akkor kattintson ide hogy megerősítse a hírlevélre való feliratkozását vagy ha a link nem működik akkor másolja be a böngésző címsorába. \n\n\nhttp://www.weblapalapok.hostzi.com/uzenet.php?id=$id&id2=$id2";
- Az uzenet.php oldalon ezt kéred le, az id alapján lekérdezed az adatbázist, a kapott adatokból felállítasz egy ellenőrző kódot:
$ellenorzo = md5($adatbazisbol_nev.$adatbazisbol_email);
- és ha a $_GET-tel kapott id2 és a $ellenorzo egyenlő egymással, akkor nem macerálta senki az azonosítókat, tehát rendben vagy, az adatbázisban az aktiv értékét igazra állítod,
- és elküldöd magadnak a levelet.

Bonyolultabb megoldás, de az adatvédelmen kívül az adatok sértetlenségét is garantálja.

Üdv:
Vyktor
2

köszi

bence04 · 2010. Aug. 5. (Cs), 11.50
szia
köszi a segítséget adatbázishoz nem értek ezért marad az első :)

legelőször úgy volt hogy nem volt megerősítés csak uzenet.php és akkor rákattintottak elküldte nekem de rájöttm hogy kéne megerősítés hogy valós E-mail cím legyen (igaz van ellenörző js-ben de attól még ki lehet játszani) remélme sikerülni fog amit írtál neki is állok :)




kész is van :) köszönöm teljesen jól működik :)
3

Az adatbázishoz nem érteni kell...

nvyktor · 2010. Aug. 5. (Cs), 11.58
Az adatbázishoz nem érteni kell, hanem guglizni 5 percet...

Egy ilyen alap adatbázist a nulláról kb 5 perc elkészíteni, ha az életben nem csináltál még ilyet, akkor fél óra... :)

Nem kell félni tőle, viszont sokkal több mindent megvalósíthatsz, ha használod.
4

igen:)

bence04 · 2010. Aug. 5. (Cs), 12.13
igen tudom már akadtam össze vele chat-nél de nem nagyon megy de ha olyan egszerű elkezdek keresgélni :) bár középiskolába fogják majd tanítani de most megyek 9-be :D:D