Autor | Zpráva | ||
---|---|---|---|
Vavroch Profil * |
#1 · Zasláno: 1. 2. 2008, 14:04:11
Zdravím
Chtěl jsem si zprovoznit mailing list,pomocí php,s ověřováním mailových adres,pomocí zasílaní registračniho mailu s odkazem. Na strankach jsem dal registr form..ktery prenese mail do databaze a odesle na zadanou adrsu mail,ktery vyzaduje overeni...az sem to funguje. Ale když chci v administracnim rozhrani odeslat mail vsem registrovanym ucastnikum,vypise se mi echo,ze vse bylo odeslano. Pritom to same,se objevi i uzivateli,ktery klikne na vygenerovany link,ktery mu prijde mailem.(tj..."mail byl odeslan vsem ucastnikum"),coz je spatne,ma se mu pouze zobrazit potvrzeni o overeni mailu a v mysql se hodnota upravir na OK. Zkousel jsemn uz snad vsechno mozne ale stale bez valneho vysledku... prikladam zdrojove kody.. Děkuji,za jakoukolliv radu a pomoc. -formulář <p>Mailinglist</p> <form> <form action="skripty/mailinglist/adminitstrace.php" method="post"> <table width="500" border="0" cellpadding="10" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td><textarea cols="50" rows="10" name="zprava"></textarea> <input type="hidden" name="id" value="ok" /></td> <td><input type="submit" name="akce" value="Odeslat reg. u�ivatel�m" /></td> </tr> </table> </form> -administrace.php <?php // posíláme zprávu? require("db_conn.php"); // naètení konfigurace databáze $zprava=$_GET['zprava']; @$vysledek=MySQL_Query("SELECT email FROM seznam WHERE overeno='OK'"); // výbìr emailù z databáze if(!$vysledek): // ošetøení chyby echo "V databázi není žádný reg. uživatel"; exit; endif; $predmet="Novinky!"; $hlavicka="From: mburle@ab-x.cz\r\n"; while($zaznam=MySQL_Fetch_Array($vysledek)): $bccx[]=$zaznam['email']; // naètení emailù do pole endwhile; $bcc.="Bcc: ".Implode($bccx, ",")."\r\n"; // oddìlení emailù èárkou $hlavicka.=$bcc."Mime-Version: 1.0\r\nX-Mailer: TEST\r\nContent-Type: text/plain; charset=utf-8\r\n"; mail("", "$predmet", "$zprava", "$hlavicka"); // poslání emailu $users = mysql_fetch_row(mysql_query("SELECT COUNT(id) FROM seznam WHERE overeno='OK'")); // kolika lidem se email odeslal echo "Posláno: ".$users[0]." uživatelùm"; ?> -mailingform.php <?php if((empty($_GET['akce']))AND(empty($kod))):?> <form action="mailing_form.php" method="get"> <tr> <td><p> <strong>Zadejte zde prosím Vaši platnou e-mail adresu:</strong></td></p> <td><input type="text" name="email" value="váš@email.cz" /></td> <td></td> <td><input type="submit" name="akce" value="Ano, chci novinky e-mailem" /></td> </tr> </form> <?php elseif(!empty($_GET['akce'])): require("db_conn.php"); // načtení nastavení databáze $DnesniDatum=date("Y-m-d H:i:s"); // dnešní datum a čas $Kod=MD5($_GET['email']); // generování unikátního kódu $Email=$_GET['email']; if(empty($Email)): // kontrola zadání emailu echo "Nebyl zadán e-mail!"; exit; else: @$vysledek=MySQL_Query("INSERT INTO seznam VALUES ('', '$DnesniDatum', '$Email', '$Kod', 'NO')"); // vložení dat do databáze if($vysledek): $predmet="Potvrzení e-mailu"; $hlavicka="From: ASSASIN@seznam.cz\nX-Mailer: TEST\nContent-Type: text/html"; $zprava="Dne: ".$DnesniDatum." byl přidán Váš e-mail: ".$Email." do naší databáze pro zasílání novinek našeho serveru. Klikněte na následující odkaz pro potvrzení správnosti e-mailu: <a href='http://localhost/NEW_webcorporate.cz/include/scripts/mailinglist /administrace.php?email=".$email."&kod=".$Kod."'>http://localhost/NEW_ webcorporate.cz/include/scripts/mailinglist/administrace.php?email=".$ email."&kod=".$Kod."</a><br><br>S pozdravem Admin"; mail("$Email","$predmet","$zprava","$hlavicka"); // zaslání emailu uživateli pro ověření echo "Váš e-mail byl přidán do naší databáze. Byl Vám odeslán e-mail pro potvrzení."; else: if(mysql_errno()==1062): // kontrola duplicity vkládaných údajů echo "Email je již v databázi!"; exit; else: // došlo k jiné chybě echo "Došlo k chybě, kontaktujte administrátora"; exit; endif; endif; endif; endif; if((!empty($_GET['kod']))AND(!empty($_GET['email']))): require("db_conn.php"); // načtení nastavení databáze @$kontrola=MySQL_Result(MySQL_Query("SELECT email FROM seznam WHERE (email='$email' AND kod='$kod')"), "email"); if($kontrola==$_GET['email']): // ověření emailu @$vysledek=MySQL_Query("UPDATE seznam SET overeno='OK' WHERE (email='$email' AND kod='$kod')"); if(!$vysledek): echo "Chyba databáze"; exit; else: echo "Údaje byli ověřeny, děkujeme."; exit; endif; elseif($kontrola!=$_GET['email']): echo "Údaje nebyli ověřeny."; exit; endif; endif; ?> |
||
peta Profil |
#2 · Zasláno: 2. 2. 2008, 09:30:36
Vavroch
1) cz.php.net/error_reporting - tu funkci si dej na zacatek, aby ti zobrazovala chyby. Resp lepsi tyto 3 radky: //chyby = on, zakomentovat! @ini_set('error_reporting',E_ALL); @ini_set('display_errors' ,'on'); error_reporting(E_ALL); ... zobrazuje PHP chyby 2) zrus skryvani @ pred prikazy $vysledek=MySQL_Query ... zobrazi chybu, pokud prikaz nevyjde 3) pridej k prikazum $vysledek=MySQL_Query($dotaz) or die('<hr>'.$dotaz.mysql_error()) ... zobrazuje chyby SQL 4) pridej echo tam, kde chces sledovat jake kroky se provadeji. Tim se dopatras, ktera cast se jeste provede, ktera uz ne a pak uz jen zjistit, proc se dana cast neprovedla. A to napriklad opet echo, vypsat kazdou promennou, ktera se v te casti scriptu pouziva. 5) z toho, co jsi napsal, bohuzel nechapu, jaky text napriklad prijde uzivateli (jenom obsah mailu bez php znacek, nejlepe ziskat odkazem sam z tve stranky) a co tedy tvuj script ma dostat za promenne ke zpracovani. Teda, jestli to spravne chapu... Zkusim poslat popis, podle ktereho bych to byl schopen pochopit: a) uzivatel prijde na stranku, klikne registrovat b) vyplni udaje, klikne Registruj mne c) prijde mu mail s nejakou URL: http://.../ok.php?uzivatel=tonda®istrovan=1 na kterou, kdyz klikne, tak mu to ma vypsat, "Byl jste uspesne registrovan". telepatie... * http://localhost/NEW_webcorporate.cz/include/scripts/mailinglist /administrace.php?email=".$email."&kod=".$Kod." ...toto mne v celku nezajima, protoze tam nejsou realne hodnoty. Treba je problem v tom, ze mas chybne zapsany mail pro URL, funkce cz.php.net/urlencode * pokud vidim, tak se script odesila na administrace. V administraci se vsak nikdne nenacitaji promenne email ani kod. Jinymi slovy, at uz administrace dela cokoliv, tak odkaz na ni staci http://localhost/NEW_webcorporate.cz/include/scripts/mailinglist /administrace.php Jmeno ani kod tam neni podstatny :) |
||
Časová prodleva: 2 měsíce
|
|||
katerina zemanova Profil * |
#3 · Zasláno: 19. 3. 2008, 00:54:09
mam problem.Nejdou mi odeslat e-mejly na seznamu,bez toho aniz bych opsala takovy ten kod se spoustou diakritickych znamenek.Bohuzel nemam ceskou klavesnici a tak se mi nikdy nepodari kod opsat spravne,tim padem se mi e-mejl ulozi do slozky rozepsane a dal nic.Nevim si s tim rady,poradte mi nekdo [prosim.Dekuji
|
||
Časová prodleva: 16 let
|
0