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:
  1. <div class="hirlevel">  
  2. <form name="hirlevel" method="POST" action="megerosit.php" >   
  3. Név:<input type="text" name="nev"><br>   
  4. E-mail:<input type="text" name="email"><br>   
  5. <input type="submit" name="submit" value="Feliratkozás">   
  6. </form>  
  7. </div>  
Ha rákattintunk a feliratkozásra akkor végrehajtódik a megerosit.php
ami így néz ki:
  1. <?php  
  2.   
  3. $email = $_POST[email];  
  4. $nev = $_POST[nev];  
  5. $subject = "Hírlevél megerősítése";   
  6. $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";   
  7.   
  8. mail("$email", iconv("UTF-8""ISO-8859-2"$subject), iconv("UTF-8""ISO-8859-2"$message), "From: info##kukac##weblapalapok.hostzi.com");  
  9. echo "Sikeresen feliratkozott a hírlevélre";  
  10.   
  11. ?>  
é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:
  1. <?php  
  2.   
  3.     
  4.   
  5. $nev = $_POST[nev];  
  6. $email = $_POST[email];  
  7. $subject = "Feliratkozás a hírlevélre";   
  8. $message = "Név: $nev \nEmail: $email";     
  9.     
  10.   
  11. mail("info##kukac##weblapalapok.hostzi.com", iconv("UTF-8""ISO-8859-2"$subject), iconv("UTF-8""ISO-8859-2"$message), "From: $email");  
  12. echo "Sikeresen feliratkozott a hírlevélre";  
  13. ?>  
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:
  1. <?php    
  2. $email = $_POST['email'];    
  3. $nev = $_POST['nev'];    
  4. $subject = "Hírlevél megerősítése";     
  5. $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";     
  6. mail("$email", iconv("UTF-8""ISO-8859-2"$subject), iconv("UTF-8""ISO-8859-2"$message), "From: info##kukac##weblapalapok.hostzi.com");    
  7. echo "Sikeresen feliratkozott a hírlevélre";    
  8. ?>   
És ehhez az uzenet.php:
  1. <?php    
  2. $nev = $_GET['nev'];    
  3. $email = $_GET['email'];    
  4. $subject = "Feliratkozás a hírlevélre";     
  5. $message = "Név: $nev \nEmail: $email";       
  6. mail("info##kukac##weblapalapok.hostzi.com", iconv("UTF-8""ISO-8859-2"$subject), iconv("UTF-8""ISO-8859-2"$message), "From: $email");    
  7. echo "Sikeresen feliratkozott a hírlevélre";    
  8. ?>  
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:
  1. $id2 = md5($nev.$email);  
- ezt küldöd ki a levélben, vagyis a hivatkozás:
  1. $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:
  1. $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