darekq
24.01.2008, 16:12:26
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
24.01.2008, 17:21:12
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
24.01.2008, 18:48:42
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
24.01.2008, 19:22:19
Domniemam ze to Twoja strona i na php bądź co bądź sie znasz

<?php
$act = $_GET['act'];
$login = $_GET['login'];
if(funkcja_ktora_sprawdza_czy_podany_user_istnieje($login))//sprawdzamy czy podany login istnieje w bazie
{ //jesli istnieje
if($dane['active'] == 0) //sprawdzamy czy konto jest aktywne
{//jesli nie
if($act == 'active_mail')//sprawdzamy czy user chce aktywowac konto
{//jesli tak
if(funkcja_ktora_pobierze_i_wysle_na_maila_uzytkownika_jeszcze_raz_link_aktywacyjny($dane['id'], $dane['email'], $active['hash']))
{
echo 'Mail został poprawnie wysłany'; }
}
else
{//jesli nie chce aktywować a nie zostało aktywowane
echo 'Konto nie zostało aktywowane.<br /> Jeśli w ciągu godziny na podanego przez Pana maila nie doszedł link aktywacyjny
proszę sprawdzić folder spam
i/lub wejść <a href="?login='.$login.'&act=active_mail">tutaj</a> by ponownie go wysłać.';
}
}
else
{//jesli konto jest aktywne
echo 'Konto pierwsza klasa'; }
}
else
{//jesli podany user nie istnieje
echo 'Podany użytkownik nie istnieje'; }
?>
DareDevil19
24.01.2008, 19:33:27
<?
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();
?>