Witam. Jestem w trakcie pisania strony w której po założeniu konta (podaje się tam login, adres mailowy i hasło) mamy możliwość przejścia do panelu administracyjnego. Tam z kolei mogę zmienić hasło (ten skrypt jest ok, działa) i również mogę zmienić adres mailowy.
Zmiana adresu e-mail polega na tym, że na zmieniany adres zostaje wysłany link aktywacyjny:
account_email_change.php:
<?php
$czy_zalogowany = $_SESSION['zalogowany'];
if ($czy_zalogowany == 1)
{
$nowy_adres_mailowy = $_POST['new_mail'];
$stary_adres_mailowy = $_SESSION['zalogowany_mail'];
if (!empty($nowy_adres_mailowy)) { $wyslij_kod = 1; }
function rand_str($length = 10, $chars = '1234567890')
{
// Length of character list
$chars_length = (strlen($chars) - 1
);
// Start our string
$string = $chars{rand(0
, $chars_length)};
// Generate random string
for ($i = 1; $i < $length; $i = strlen($string)) {
// Grab a random character from our list
$r = $chars{rand(0
, $chars_length)};
// Make sure the same two characters do not appear next to each other
if ($r != $string{$i - 1}) $string .= $r;
}
// Return the string
return $string;
}
$kod_zmiany_maila = rand_str();
include("config.php");
$dane_do_sprawdzenia = "select * from user_list WHERE user_mail = '$stary_adres_mailowy'";
if ($czy_wpisano_dobrze>0)
{
$result = mysql_query("UPDATE user_list SET user_act_code='$kod_zmiany_maila' WHERE user_mail='$stary_adres_mailowy'") or
die ("Problem z bazą danych. Przepraszamy. Próbujemy to rozwiązać jak najszybciej tylko się da.<br>"); echo "Wysłano link aktywujący nowy adres.<br>";
echo "Kod do zmiany to: ".$kod_zmiany_maila." <br>"; $emaill=$nowy_adres_mailowy;
$title="Zmiana adresu e-mail";
mail($emaill, $title, $wiadomosc);
}
}
?>
Klikając na odsyłacz przeniesie nas na stronę "email_verify.php":
<?php
$zmieniany_mail = $_REQUEST['deactivated_mail'];
$kod_zmieniajacy = $_REQUEST['activation_code'];
$zapisywany_mail = $_REQUEST['activated_mail'];
echo "Mail który zostanie zmieniony: ".$zmieniany_mail."<br>"; echo "Mail który zostanie wprowadzony: ".$zapisywany_mail."<br>"; echo "kod aktywujący nowego maila: ".$kod_zmieniajacy."<br>"; // powyższe 3 linijki są celowo wyświetlone żeby sprawdzić czy odsyłacz przesyła wartość zmiennych na stronę. Docelowo tego tu nie będzie
include("config.php"); // szczegóły są najmniej istotne gdyż poprawnie się łączy z bazą danych
$dane_do_sprawdzenia = "select * from user_list WHERE user_act_code = '$kod_zmieniajacy'";
if ($czy_wpisano_dobrze>0)
{
$result = mysql_query("UPDATE user_list SET user_mail='$zapisywany_mail' WHERE user_mail='$zmieniany_mail'") or
die ("Problem z bazą danych. Przepraszamy. Próbujemy to rozwiązać jak najszybciej tylko się da.<br>"); echo "Adres mailowy został pomyślnie zmieniony.<br>"; }
if ($czy_wpisano_dobrze == 0)
{
echo "Kliknięto w zły lub nieważny odsyłacz.<br>"; }
?>
A gdy mimo wszystko kliknę na odsyłacz to powyższy kod pokazuje, że odsyłacz poprawnie przekazuje dane do strony jednakże wciąż pojawia się tekst, że kliknięto w zły lub nieważny odsyłacz i w konsekwencji zmiany nie są wprowadzane. Nie wiem czy jest zła składnia wywołania mysql czy to tylko php także w tym dziale zadaję pytanie.
Jestem w kropce. Proszę o pomoc. (PS. Pełna zasada działania skryptu jest na
www.polish-chicks.net - strona pusta, można tylko się zarejestrować, tylko trzeba podać poprawny adres e-mail bo na niego jest wysyłany kod aktywujący który się wprowadza w pole do aktywacji konta i gdy konto już jest aktywne to po zalogowaniu można przejść do panelu administracyjnego konta skąd można wprowadzać zmiany).
Edit o 5:50: Problem udało się rozwiązać, przy jednej zmiennej było o jeden znak $ za dużo ale nadal muszę spróbować rozwiązać problem co zrobić gdy kliknę na odsyłacz, żebym był dalej zalogowany
Ten post edytował unloco 23.08.2010, 04:51:20