Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Skrypt rejestracji
Forum PHP.pl > Forum > Przedszkole
Stron: 1, 2
Niktoś
A gdzie poprzednie miałeś?
SantaClaus
Poprzednie zapytanie wykonywałem w phpMyAdmin..
Niktoś
Tworzysz prostą tabelkę w php admin i używasz
IF NOT EXISTS -to dla mnie trochę dziwne- miałoby to sens w procedurach składowych,ale tutaj,chyba że po 10min zapominasz czy tworzyłeś tabelkę czy nie.Ech zresztą jak tam wolisz.
SantaClaus
  1. CREATE TABLE `user` (
  2. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. `login` VARCHAR(50) COLLATE utf8_polish_ci NOT NULL,
  4. `haslo` VARCHAR(32) COLLATE utf8_polish_ci NOT NULL,
  5. `email` VARCHAR(120) COLLATE utf8_polish_ci NOT NULL
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;


Tak wyglądało moje wykonane zapytanie do bazy danych. I problem polega na tym, że po przejściu na rejestracja.php i zrobieniu konta nie zapisuje danych w bazie i przenosi ponownie do rejetracji. Nie pokazuje informacji o wysłanym linku ani nic..
Niktoś
Ja się poddaję.Po prostu nie umiem z tobą nawiązać języka.
Raz piszesz w czasie przeszłym potem w teraźniejszym.Nie umiem tego pojąć -za płytki mój umysł.
gorden
if ($_POST["wyslane"]) dodaj isset
wyświetlanie formularza i tylko formularza daj w else do w/w warunku
SantaClaus
  1. CREATE TABLE `user` (
  2. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. `login` VARCHAR(50) COLLATE utf8_polish_ci NOT NULL,
  4. `haslo` VARCHAR(32) COLLATE utf8_polish_ci NOT NULL,
  5. `email` VARCHAR(120) COLLATE utf8_polish_ci NOT NULL
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;


To zapytanie wykonałem w phpMyAdmin, aby utworzyć tabelkę user.
Jak wchodzę na swoją stroną i rejestruje się to nie wysyła danych do bazy i przenosi mnie ponownie do rejestracji.

Bardziej się tego wytłumaczyć nie da..

Cytat
if (isset($_POST["wyslane"])) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt


Nie pomogło.
gorden
dodałeś else? i może napisz co się teraz dzieje. moje umiejętności wróżbiarskie jeszcze nie są na takim poziomie. a to isset jednak nie potrzebne bo myślałem że wyslane to name dla submita
SantaClaus
  1. <?php
  2. session_start(); // rozpoczÄ?cie sesji
  3. ?>
  4.  
  5. <?php
  6.  
  7. if (!isset($_SESSION['login'])) { // dostęp dla zalogowanego użytkownika
  8.  
  9. include 'inc/db.php'; // połączenie się z bazą danych
  10. $tabela = 'user'; // zdefiniowanie tabeli MySQL
  11.  
  12. if (isset($_POST["wyslane"])) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  13.  
  14. // filtrowanie treści wprowadzonych przez użytkownika
  15. $login = mysql_real_escape_string(trim($_POST["login"]));
  16. $haslo = mysql_real_escape_string(trim($_POST["haslo2"]));
  17. $haslo2 = mysql_real_escape_string(trim($_POST["haslo2"]));
  18. $email= mysql_real_escape_string(trim($_POST["email"]));
  19.  
  20. // system sprawdza czy prawidło zostały wprowadzone dane
  21. if (strlen($login) < 3 or strlen($login) > 30 or !eregi("^[a-zA-Z0-9_.]+$", $login)) {
  22. $blad++;
  23. echo '<span class="blad">Proszę poprawny wprowadzić login (od 3 do 30 znaków).</span>';
  24. } else {
  25. $wynik=mysql_query("SELECT * FROM $tabela WHERE login='$login'") or die(mysql_error());
  26. if (mysql_num_rows($wynik)>0) { $blad++;
  27. echo "Wybrany login jest już używany przez innego użytkownika.";
  28. }
  29. }
  30.  
  31. if (strlen($haslo) < 6 or strlen($haslo) > 30 ) {
  32. $blad++;
  33. echo '<span class="blad">Proszę poprawnie wpisać hasło (od 6 znaków do 30 znaków).</span>';
  34. }
  35. if ($haslo !== $haslo2) {
  36. $blad++;
  37. echo '<span class="blad">Podane hasła nie są ze sobą zgodne.</span>';
  38. }
  39. if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$", $email)) {
  40. $blad++;
  41. echo '<span class="blad">Proszę wprowadzić poprawnie adres email.</span>';
  42. }
  43.  
  44. // jeżeli nie ma żadnego błedu, użytkownik zostaje zarejestronwany i wysłany do niego e-mail z linkiem aktywacyjnym
  45. if ($blad == 0) {
  46.  
  47. $haslo = md5($haslo); // zaszyfrowanie hasla
  48. $kod = uniqid(rand()); // tworzenie unikalnego kodu dla użytkownika
  49.  
  50. $wynik = mysql_query("INSERT INTO $tabela VALUES('', '$id', '$login', '$haslo', '$email', '$kod', NOW(), '')");
  51. if ($wynik) {
  52. $list = "Witaj $login !
  53. Kliknij w poniższy link, aby aktywować swoje konto. http://www.nazwa-twojej-strony.pl/weryfika...#036;kod";
  54. mail(html_entity_decode($email), "Rejestracja użytkownika", $list, "From: <kontakt@twoja-strona.pl>");
  55. echo '<p>Dziękujemy za rejestrację! W ciągu nabliższych 5 minut dostaniesz wiadomość e-mail z dalszymi wskazówkami rejestracji.</p>';
  56. mysql_close($polaczenie);
  57. }
  58. }
  59. mysql_close($polaczenie);
  60. }
  61. else
  62. {
  63. // tworzenie formularza HTML
  64. echo <<< KONIEC
  65.  
  66.   <div class="formularz">
  67.   <form class="form" action="rejestracja.php" method="post">
  68.   <input type="hidden" name="wyslane" value="TRUE" />
  69.  
  70. <p>
  71. <div class="label"><label for="login">Login:</label></div>
  72. <input type="text" name="login" id="login" />
  73. </p>
  74.  
  75. <p>
  76. <div class="label"><label for="haslo">Hasło:</label></div>
  77. <input type="password" name="haslo" id="haslo" />
  78. </p>
  79.  
  80. <p>
  81. <div class="label"><label for="haslo2">Powtórz hasło:</label></div>
  82. <input type="password" name="haslo2" id="haslo2" />
  83. </p>
  84.  
  85. <p>
  86. <div class="label"><label for="email">Email:</label></div>
  87. <input type="text" name="email" id="email" />
  88. </p>
  89.   <p class="submit">
  90.   <input type="submit" value="Zarejestruj mnie" />
  91.   </p></form>
  92. KONIEC;
  93. }
  94.  
  95. } else {
  96. header('Location: /index.php');
  97. }
  98.  
  99. ?>


Po dodaniu else i issetu po wpisaniu danych i kliknięciu submit nie wysyła danych do bazy i zamiast rejestracji jest cała biała strona.
ciekawskiii
A zapytanie INSERT masz dobrze tak?
Niktoś
No faktycznie ,to efekt bezmyślnego kopiuj /wklej ,7 wartości a kolumn tylko 4.
Po za tym tak na przyszłość błąd logiczny także masz tutaj:

$haslo = mysql_real_escape_string(trim($_POST["haslo2"]));
$haslo2 = mysql_real_escape_string(trim($_POST["haslo2"]));
Poszedłeś ,na łatwiznę nie wystarczy kopij/wklej ,aby coś zrobić,trzeba myśleć i przede wszystkim wiedzieć do czego to służy.
ciekawskiii
Jeszcze pomyśl jak dałeś isset($_POST). Jezeli ktoś wpisze błędne dane to już formularza nie zobaczy bo dałeś go w else a wystarczy if(isset() { } i tyle. Druga sprawa to gdybyś do if($wynik) dodał else to byś widział że błąd masz w zapytaniu. Tak jak kolega wyżej napisał, trzeba myśleć
SantaClaus
  1. <?php
  2. ?>
  3.  
  4. <?php include('header.php'); ?>
  5.  
  6. <div class="content">
  7.  
  8. <?php
  9.  
  10. if (!isset($_SESSION['login'])) { // dostęp dla zalogowanego użytkownika
  11.  
  12. include 'inc/db.php'; // połączenie się z bazą danych
  13. $tabela = 'user'; // zdefiniowanie tabeli MySQL
  14.  
  15. if (isset($_POST["wyslane"])) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  16.  
  17. // filtrowanie treści wprowadzonych przez użytkownika
  18. $login = mysql_real_escape_string(trim($_POST["login"]));
  19. $haslo = mysql_real_escape_string(trim($_POST["haslo"]));
  20. $haslo2 = mysql_real_escape_string(trim($_POST["haslo2"]));
  21. $email= mysql_real_escape_string(trim($_POST["email"]));
  22.  
  23. // system sprawdza czy prawidło zostały wprowadzone dane
  24. if (strlen($login) < 3 or strlen($login) > 30 or !eregi("^[a-zA-Z0-9_.]+$", $login)) {
  25. $blad++;
  26. echo '<span class="blad">Proszę poprawny wprowadzić login (od 3 do 30 znaków).</span>';
  27. } else {
  28. $wynik=mysql_query("SELECT * FROM $tabela WHERE login='$login'") or die(mysql_error());
  29. if (mysql_num_rows($wynik)>0) { $blad++;
  30. echo "Wybrany login jest już używany przez innego użytkownika.";
  31. }
  32. }
  33.  
  34. if (strlen($haslo) < 6 or strlen($haslo) > 30 ) {
  35. $blad++;
  36. echo '<span class="blad">Proszę poprawnie wpisać hasło (od 6 znaków do 30 znaków).</span>';
  37. }
  38. if ($haslo !== $haslo2) {
  39. $blad++;
  40. echo '<span class="blad">Podane hasła nie są ze sobą zgodne.</span>';
  41. }
  42. if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$", $email)) {
  43. $blad++;
  44. echo '<span class="blad">Proszę wprowadzić poprawnie adres email.</span>';
  45. }
  46.  
  47. // jeżeli nie ma żadnego błedu, użytkownik zostaje zarejestronwany i wysłany do niego e-mail z linkiem aktywacyjnym
  48. if ($blad == 0) {
  49.  
  50. $haslo = md5($haslo); // zaszyfrowanie hasla
  51. $kod = uniqid(rand()); // tworzenie unikalnego kodu dla użytkownika
  52.  
  53. $wynik = mysql_query("INSERT INTO $tabela VALUES('$id', '$login', '$haslo', '$email', '$kod', NOW(), '')");
  54. if ($wynik) {
  55. $list = "Witaj $login !
  56. Kliknij w poniższy link, aby aktywować swoje konto. <a href="http://www.nazwa-twojej-strony.pl/weryfika...#036;kod&quot;;" target="_blank">http://www.nazwa-twojej-strony.pl/weryfika...#036;kod";</a>
  57. mail(html_entity_decode($email), "Rejestracja użytkownika", $list, "From: <kontakt@twoja-strona.pl>");
  58. echo '<p>Dziękujemy za rejestrację! W ciągu nabliższych 5 minut dostaniesz wiadomość e-mail z dalszymi wskazówkami rejestracji.</p>';
  59. mysql_close($polaczenie);
  60. }
  61. }
  62. mysql_close($polaczenie);
  63. }
  64.  
  65. // tworzenie formularza HTML
  66. echo <<< KONIEC
  67.  
  68.   <div class="formularz">
  69.   <form class="form" action="rejestracja.php" method="post">
  70.   <input type="hidden" name="wyslane" value="TRUE" />
  71.  
  72. <p>
  73. <div class="label"><label for="login">Login:</label></div>
  74. <input type="text" name="login" id="login" />
  75. </p>
  76.  
  77. <p>
  78. <div class="label"><label for="haslo">Hasło:</label></div>
  79. <input type="password" name="haslo" id="haslo" />
  80. </p>
  81.  
  82. <p>
  83. <div class="label"><label for="haslo2">Powtórz hasło:</label></div>
  84. <input type="password" name="haslo2" id="haslo2" />
  85. </p>
  86.  
  87. <p>
  88. <div class="label"><label for="email">Email:</label></div>
  89. <input type="text" name="email" id="email" />
  90. </p>
  91.   <p class="submit">
  92.   <input type="submit" name="wyslane" value="Zarejestruj mnie" />
  93.   </p></form>
  94. KONIEC;
  95.  
  96. }
  97.  
  98. ?>
  99.  
  100. </div>
  101.  
  102. <?php include('footer.php'); ?>


Poprawiłem błędy i nadal nie działa. ;/
ciekawskiii
masz zle zapytanie INSERT INTO:/ czy Ty w ogole czytasz co my piszemy?
Niktoś
To już 64 post w tym temacie ,a Tobie dalej nie działa ,dla bardziej opornych są kursy i tutoriale na google, ucz się ,i testuj bo na razie co dobrze Tobie wychodzi to słowo "dalej nie działa"-i nie pisze to po złości ani ,żeby Ciebie ośmieszyć.
sliwa007
złe zapytanie:
  1. $wynik = mysql_query("INSERT INTO $tabela VALUES('', '$id', '$login', '$haslo', '$email', '$kod', NOW(), '')");


powinno być
  1. $wynik = mysql_query("INSERT INTO $tabela VALUES('','$login','$haslo','$email')");


Ponieważ id nadaje się automatycznie bo masz auto_increment natomiast kolumny "kod" nie masz w ogóle utworzonej.
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.