Autor Zpráva
Vavroch
Profil *
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
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&registrovan=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 :)
katerina zemanova
Profil *
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: