Witam
Standardowo na początku napiszę, że jestem początkującym w dziedzinie PHP i MySQL.
Mam następujący problem. Zakupiłem książkę pt. PHP5 i MySQL Biblia. Jeden z rozdziałów tzn. 44 to "Uwierzytelnianie użytkowników". Wszystko jest fajnie do chwili rejestracji nowego użytkownika. Nie wiem, co zmienić w skrypcie, aby email został wysłany. Poniżej przedstawiam kod źródłowy pliku register_funcs.inc (pozbawiony komentarzy)
Wielkie dzięki za pomoc
<?php
include_once('db_vars.inc');
$supersecret_hash_padding =
'Napis używany do przedłużania krótkich napisów do szyfrowania md5.';
function user_register() {
global $supersecret_hash_padding;
if (strlen($_POST['user_name']) <= 25
&& strlen($_POST['password1']) <= 25 && ($_POST['password1'] ==
$_POST['password2']) && strlen($_POST['email']) <= 50 && validate_email($_POST['email'])) {
if (account_namevalid($_POST['user_name']) ||
strlen($_POST['password1'] >= 6
)) {
$user_name = trim($user_name); $email= $_POST['email'];
$query = "SELECT user_id
FROM user
WHERE user_name = '$user_name'
OR email = '$email'";
$feedback = 'BŁĄD - Powtórzona nazwa
użytkownika lub adres poczty elektronicznej';
return $feedback;
} else {
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$password = md5($_POST['password1']); $user_ip = $_SERVER['REMOTE_ADDR'];
$hash = md5($email.$supersecret_hash_padding);
$query = "INSERT INTO user (user_id, user_name, first_name,
last_name, password, email, remote_addr,
confirm_hash, is_confirmed, date_created)
VALUES (NULL, '$user_name', '$first_name',
'$last_name', '$password', '$email',
'$user_ip', '$hash', 0, NOW())";
if (!$result) {
$feedback = 'BŁĄD - Błąd bazy danych';
return $feedback;
} else {
$mail_body = <<< EOMAILBODY
Dziękujemy za rejestrację na Example.com.
Kliknij poniższy odnośnik w celu potwierdzenia rejestracji:
[url="http://localhost"]http://localhost[/url]
/confirm.php?hash
=$hash&email
=$encoded_email
Po otrzymaniu informacji o potwierdzeniu,
będziesz już zalogowany na Exapmle.com
EOMAILBODY;
mail ($email, 'Potwierdzenie rejestracji na Example.com', $mail_body,
'From: [email="noreply@example.com"]noreply@example.com'[/email]);
$feedback = 'REJESTRACJA SIĘ UDAŁA.
Wkrótce otrzymasz pocztę elektroniczną
z prośbą o potwierdzenie';
return $feedback;
}
}
} else {
$feedback = 'BŁĄD - Niewłaściwa nazwa
użytkownika lub hasło';
return $feedback;
}
} else {
$feedback = 'BŁĄD - Proszę poprawnie
wypełnić wszystkie pola';
return $feedback;
}
}
function account_namevalid() {
if (strspn($_POST['user_name'], "abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-") == 0)
{
return false;
}
if (strspn($_POST['user_name'], "abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_")
!= strlen($_POST['user_name'])) { return false;
}
if (strlen($_POST['user_name']) < 5
) { return false;
}
if (strlen($_POST['user_name']) > 25
) { return false;
}
if (eregi("^((root)|(bin)|(daemon)|(adm)|(lp)| (sync)|(shutdown)|(halt)|(mail)|(news)|(uucp)|
(operator)|(games)|(mysql)|(httpd)|(nobody)|
(dummy)|(www)|(cvs)|(shell)|(ftp)|(irc)|(debian)|
(ns)|(download))$", $_POST['user_name'])) {
return false;
}
if (eregi("^(anoncvs_)", $_POST['user_name'])) { return false;
}
return true;
}
function validate_email($email) {
return (ereg('^[-!#$%&'*+./0-9=?A-Z^_`a-z{|}~]+ '. [email=""]'@'[/email]. '[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+.' . '
[-!#$%&'*+./0-9=?A-Z^_`a-z{|}~]+$', $email));
}
function user_confirm() {
global $supersecret_hash_padding;
$new_hash = md5($_GET['email'].$supersecret_hash_padding); if ($new_hash && ($new_hash == $_GET['hash'])) {
$query = "SELECT user_name
FROM user
WHERE confirm_hash = '$new_hash'";
$feedback = 'BŁĄD - nie znaleziono skrótu';
return $feedback;
} else {
$email = $_GET['email'];
$hash = $_GET['hash'];
$query = "UPDATE user SET email='$email',
is_confirmed=1 WHERE confirm_hash='$hash'";
return 1;
}
} else {
$feedback = 'BŁĄD - Wartości się nie zgadzają';
return $feedback;
}
}
?>
Ten post edytował Arkasam 26.02.2008, 12:03:38