Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php & mysql] Problem z linkami aktywacyjnymi
Forum PHP.pl > Forum > PHP
darekq
Witam.
Jestem początkujący mam następyjący problem. Po rejestracji zostaje wysyłany link aktywacyjny. Niestety linki dochodzą w kratkę raz jest ok raz nie. Czym to może być spowodowane, czy istnieje możliwość żę podczas równoczesnej rejestracji kilku osób wysyła tylko do1 osoby.

Czy ktoś może mi pomóc w napisani w php automatu gdzie po podaniu email zostanie wysłany do użytkownika ponownie link aktywacyjny.

Za pomoc jestem skłonny odwdzięczyć się finansowo.

Podaje część skryptu odpowiedzialnego za wysyłkę linku aktywacyjnego

if($dane_ok) {

$zapytanie = mysql_query("INSERT INTO `uzytkownicy` ( `id` , `login` , `haslo` , `plec` , `miejscowosc` , `imie` , `nazwisko` , `email` , `admin` , `active` ) VALUES (0, '$login', '".md5($haslo)."', $plec, '$miejscowosc', '$imie', '$nazwisko', '$email', 0, 0);");

if($zapytanie) {

$zapytanie = mysql_query("SELECT * FROM uzytkownicy WHERE login = '$login';");

$wynik = mysql_fetch_array($zapytanie);

$user_id = $wynik['id'];

$zapytanie = mysql_query("INSERT INTO `poczekalnia` ( `id` , `user_id` , `hash` ) VALUES (0, $user_id, '".(md5($email))."');");

if($zapytanie) {

$zapytanie = mysql_query("SELECT * FROM ustawienia LIMIT 1");

$zmienne = mysql_fetch_array($zapytanie);

$link_aktywacyjny = $zmienne['serwis_url']."_aktywuj,konto/".md5($email).'/';

$tresc = '<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.0 transitional//EN">

<html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"></head>

<body bgcolor="#ffffff"><font face="Arial" style="font-size:13px;" color="#3e3e3e">'.nl2br(($zmienne['email_potwierdzenie'])).'</font></body></html>';

$headers = "Return-Path: <".$zmienne['admin_email'].">\r\n";

$headers = "MIME-Version: 1.0 \r\n";

$headers .= "Content-type: text/html; charset=iso-8859-2 \r\n";

$headers .= 'From: "Administrator" <'.$zmienne['admin_email'].'>\r\n';

$headers .= 'Reply-To: "'.$zmienne['admin_email'].'" \r\n';

$headers .= 'X-Priority: 1\r\n';

$headers .= 'X-MSMail-Priority: High\r\n';

$tresc = strtr($tresc, "\xA5\x8C\x8F\xB9\x9C\x9F", "\xA1\xA6\xAC\xB1\xB6\xBC");

$tresc = str_replace("{login}",$login,$tresc);

$tresc = str_replace("{haslo}",$haslo,$tresc);

$tresc = str_replace("{imie}",$imie,$tresc);

$tresc = str_replace("{link_aktywacyjny}",$link_aktywacyjny,$tresc);

$tresc = str_replace("{serwis_url}",$zmienne['serwis_url'],$tresc);



mail($email,$zmienne['serwis_url']." - Aktywacja konta",$tresc,$headers);

mkdir("uzytkownicy/$login", 0777);

}


Dziekuje za pomoc

b_chmura
przy założeniu konta a braku jego aktywacji przy logowaniu poinformuj użytkownika ze to konto nie zostało jeszcze aktywowane (przykładowo kolumna active w tabeli user nie jest równa 1)

poniżej:
Jeśli mail z linkiem aktywacyjnym nie doszedł na maila podanego przy rejestracji proszę sprawdzić katalog ze spamem i/lub wejść tutaj by ponownie go wysłać

zakładam ze tak jak ja i Ty przechowujesz kod aktywacyjny w tabeli z użytkownikami, wyciągasz go i wysyłasz jeszcze raz
darekq
Wiem że trzeba tu coś dodać aby przy logowani została wyświetlona informacja "Jeśli mail z linkiem aktywacyjnym nie doszedł na maila podanego przy rejestracji proszę sprawdzić katalog ze spamem i/lub wejść tutaj by ponownie go wysłać"
ale co?

/* ------------------------------------------------------------------- */


if(isset($_GET['dzial'])) {

$dzial = $_GET['dzial'];

if($dzial == "wyloguj") {

session_unset();

session_destroy();

}

if($dzial == "zaloguj" && isset($_POST['login']) && isset($_POST['haslo'])) {

$_SESSION['login'] = strtolower($_POST['login']);

$_SESSION['haslo'] = md5($_POST['haslo']);

header("location: ../_powitanie/");

die();

}

}

else

$dzial = "start";

/* ------------------------------------------------------------------- */

b_chmura
Domniemam ze to Twoja strona i na php bądź co bądź sie znasz smile.gif

  1. <?php
  2. $act = $_GET['act'];
  3. $login = $_GET['login'];
  4.  
  5. if(funkcja_ktora_sprawdza_czy_podany_user_istnieje($login))//sprawdzamy czy podany login istnieje w bazie
  6. { //jesli istnieje
  7. $dane  = mysql_fetch_assoc(mysql_query("SELECT * FROM `uzytkownicy` WHERE `login` = '".$login."'"));
  8. $active = mysql_fetch_assoc(mysql_query("SELECT * FROM `poczekalnia` WHERE `login` = '".$login."'"));
  9.  
  10. if($dane['active'] == 0) //sprawdzamy czy konto jest aktywne
  11. {//jesli nie
  12. if($act == 'active_mail')//sprawdzamy czy user chce aktywowac konto
  13. {//jesli tak
  14. if(funkcja_ktora_pobierze_i_wysle_na_maila_uzytkownika_jeszcze_raz_link_aktywacyjny($dane['id'], $dane['email'], $active['hash']))
  15. {
  16. echo 'Mail został poprawnie wysłany';
  17. }
  18. }
  19. else
  20. {//jesli nie chce aktywować a nie zostało aktywowane
  21. echo 'Konto nie zostało aktywowane.<br />
  22. Jeśli w ciągu godziny na podanego przez Pana maila nie doszedł link aktywacyjny 
    proszę sprawdzić folder spam 
  23. i/lub wejść <a href="?login='.$login.'&act=active_mail">tutaj</a> by ponownie go wysłać.';
  24. }
  25. }
  26. else
  27. {//jesli konto jest aktywne
  28. echo 'Konto pierwsza klasa';
  29. }
  30. }
  31. else
  32. {//jesli podany user nie istnieje
  33. echo 'Podany użytkownik nie istnieje';
  34. }
  35. ?>
DareDevil19
<?

require_once("include/bittorrent.php");
dbconn();

$res = mysql_query("SELECT COUNT(*) FROM users") or sqlerr(__FILE__, __LINE__);
$arr = mysql_fetch_row($res);
if ($arr[0] >= $maxusers)
stderr("Przyko mi", "Obecny limit użytkowników (" . number_format($maxusers) . ") został osi±gnięty. Nieaktywne konta s± ci±gle kasowane, proszę spróbować póĽniej...");


stdhead("Rejestracja");

?>

<b>Ważne:</b> Musisz mieć wł±czone "ciasteczka" aby się zarejestrować lub zalogować.<br>
<b>Informacja:</b> E-mail aktywacynjy nie dochodzi do serwisów <b>o2.pl</b> i <b>interia.pl</b> dob± alternatyw± jest <A HREF="http://poczta.onet.pl/login.html"><b>onet.pl</b>.</A>
<p>
<form method="post" action="takesignup.php">
<table border="1" cellspacing=0 cellpadding="10">
<tr><td align="right" class="heading">Nazwa użytkownika:</td><td align=left><input type="text" size="40" name="wantusername" /></td></tr>
<tr><td align="right" class="heading">Hasło:</td><td align=left><input type="password" size="40" name="wantpassword" /></td></tr>
<tr><td align="right" class="heading">Wpisz ponownie hasło:</td><td align=left><input type="password" size="40" name="passagain" /></td></tr>
<? if($arr[0] >= $maxinviteusers) { ?>
<tr><td align="right" class="clearalt6"><b>Podaj kod zaproszenia:</b></td><td align=left class=clearalt6><input type="text" size="40" name="invite" /></td></tr>
<? } ?>
<tr valign=top><td align="right" class="heading">Adres e-mail:</td><td align=left><input type="text" size="40" name="email" />
<table width=250 border=0 cellspacing=0 cellpadding=0><tr><td class=embedded><font class=small> Adres Email musi być prawidłowy. Na podany przez Ciebie adres zostanie wysłana wiadomo¶ć z linkiem aktywuj±cym.</td></tr>
</font></td></tr></table></td></tr>
<? $countries = "<option value=75>---- Nie wybrano ----</option>n";
$ct_r = mysql_query("SELECT id,name FROM countries ORDER BY name") or die;
while ($ct_a = mysql_fetch_array($ct_r))
$countries .= "<option value=$ct_a[id]" . ($CURUSER["country"] == $ct_a['id'] ? " selected" : "") . ">$ct_a[name]</option>n";
tr("Państwo", "<select name=country>n$countries</select>", 1); ?>
<tr><td class=rowhead>Płeć</td><td align=left>
<input type=radio name=gender value=Male>Mężczyzna <input type=radio name=gender value=Female>Kobieta </td></tr>
<tr><td align="right" class="heading"></td><td align=left><input type=checkbox name=rulesverify value=yes> Przeczytałem zasady obowi±zuj±ce na stronie.<br>
<input type=checkbox name=faqverify value=yes> Zgadzam się przczytać FAQ zanim zadam pytanie.<br>
<input type=checkbox name=ageverify value=yes> Mam przynajmniej 13 lat.</td></tr>
<tr><td colspan="2" align="center"><input type=submit value="Zarejestruj!" style='height: 25px'></td></tr>
</table>
</form>
<?

stdfoot();

?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.