Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP] Aktywacja konta poprzez e-mail.
Forum PHP.pl > Forum > Przedszkole
nirre
Witam, czy ktoś mógłby mi powiedzieć jak do robić do poniższego skryptu rejestracji, aktywacje zarejestrowanego konta poprzez link w nadesłanym email ?

Kod
<?php include'zawartosc.php' ?>
<?
/**
* Register.php
*
* Displays the registration form if the user needs to sign-up,
* or lets the user know, if he's already logged in, that he
* can't register another name.
*
* Written by: Jpmaster77 a.k.a. The Grandmaster of C++ (GMC)
* Last Updated: August 19, 2004
*/
include("include/session.php");
?>

<html>
<title>Registration Page</title>
<body>

<?
/**
* The user is already logged in, not allowed to register.
*/
if($session->logged_in){
   echo "<b>Komplikacja</b>";
   echo "<p>Twoje konto <b>$session->username</b>, jest aktualnie zalogowane.<br>Aby zarejestrować się musisz wpierw wylogować się!<br><br> "

       ."<a href=\"main.php\">Powrót do konta</a>.</p>";
}
/**
* The user has submitted the registration form and the
* results have been processed.
*/
else if(isset($_SESSION['regsuccess'])){
   /* Registration was successful */
   if($_SESSION['regsuccess']){
      echo "<b>Zostałeś pomyślnie zarejestrowany !</b>";
      echo "<p>Dziękujemy za zarejestrowanie się. Twoje konto <b>".$_SESSION['reguname']."</b> jest już aktywne i możesz się"
          ." <a href=\"main.php\">zalogować</a>.</p>";
   }
   /* Registration failed */
   else{
      echo "<b>Komplikacja</b>";
      echo "<p>Błąd tworzenia konta <b>".$_SESSION['reguname']."</b>, "
          ."spróbuj zarejestrować się później!<br>Przepraszamy za kłopoty techniczne.";
   }
   unset($_SESSION['regsuccess']);
   unset($_SESSION['reguname']);
}
/**
* The user has not filled out the registration form yet.
* Below is the page with the sign-up form, the names
* of the input fields are important and should not
* be changed.
*/
else{
?>

<b>Rejestracja</b><p>
<?
if($form->num_errors > 0){
   echo "<td>Znaleziono ".$form->num_errors." błedów</td>";
}
?>
<form action="process.php" method="POST">
<table align="left" border="0" cellspacing="0" cellpadding="3">
<tr><td>Pseudo:</td><td><input type="text" name="user" maxlength="30" value="<? echo $form->value("user"); ?>"></td><td><? echo $form->error("user"); ?></td></tr>
<tr><td>Hasło:</td><td><input type="password" name="pass" maxlength="30" value="<? echo $form->value("pass"); ?>"></td><td><? echo $form->error("pass"); ?></td></tr>
<tr><td>Email:</td><td><input type="text" name="email" maxlength="50" value="<? echo $form->value("email"); ?>"></td><td><? echo $form->error("email"); ?></td></tr>
<tr><td colspan="2" align="right">
<input type="hidden" name="subjoin" value="1">
<input type="submit" value="Zarejestruj"></td></tr>
<tr><td colspan="2" align="left"><a href="main.php">Powrót do logowania</a></td></tr>
</table>
</form>

<?
}
?>

</body>
</html>
<?php include'koniec.php' ?>
qqrq
Po pierwsze w bazie dodajesz do tabeli z użytkownikami nowe pole oznaczające, czy użytkownik jest aktywny czy nie. Po drugie w każdym logowaniu musisz sprawdzać oprócz danych, także status użytkownika. Po trzecie musisz wysłać email w drugim if-ie - o w tym:

  1. <?php
  2. /**
  3. * The user has submitted the registration form and the
  4. * results have been processed.
  5. */
  6. else if(isset($_SESSION['regsuccess'])){
  7.  /* Registration was successful */
  8.  if($_SESSION['regsuccess']){
  9. ?>


miejscu. A co w mailu? Daj linka zawierającego (w zmiennych GET) np. login, zahaszowane hasło+login (albo jakąś inną kombinację, byle żeby nikt nie mógł sobie tego wpisać w pasku przeglądarki), a następnie dodaj do tego skryptu jednego if-a sprawdzającego, czy ktoś wszedł na stronę z maila. Na przykład link to http://index.php?login=ktostam&hash=97...s9d6d97asd86s9d. Ifa robisz tak:

  1. <?php
  2. else if (isset($_GET['login']) && isset($_GET['hash']))
  3. ?>


Sprawdzasz teraz, czy dane są prawidłowe (tzn. czy login zgadza się z hashem - zagladasz do bazy, czy gdzie tam trzymasz dane). Jeśli tak - uaktywniasz użytkownika, jeśli nie - wywalasz jakiś błąd.
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.