Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> [PHP/MySQL] Problem z rejestracją
guzior
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2007

Ostrzeżenie: (0%)
-----


Napisałem sobie skrypt PHP rejestracji z połączeniem do bazy danych MySQL i z jakiegoś powodu podczas logowania pisze że dane wpisane do formularza podczas logowania się nie zgadzają.

Bardzo proszę o pomoc.

Oto skrypty:

Skrypt logowania:

  1. <? #logowanie.php
  2. if (isset($_POST['submit'])) {
  3.    require_once ('includes/mysql_connect.php');
  4.    
  5.    //Funkcja wstawiająca przed znakami specjalnymi znak odwrotengo ukośnika.
  6.    function escape_data ($data) {
  7.        global $dbc;
  8.        if (ini_get('magic_quotes_gpc')) {
  9.            $data = stripslashes($data);
  10.        }
  11.        return mysql_real_escape_string($data, $dbc);
  12.    }
  13.    //Koniec funkcjii.
  14.  
  15. $message = NULL;
  16.  
  17. //Sprawdź nazwę użytkownika
  18. if (empty($_POST['username'])) {
  19.    $u = FALSE;
  20.    $message .= '<p>Zapomniałeś wprowadzić nazwę użytkownika!</p>';
  21. } else {
  22.    $u = escape_data($_POST['username']);
  23. }
  24.  
  25. //Sprawdź hasło
  26. if (empty($_POST['password'])) {
  27.    $p = FALSE;
  28.    $message .= '<p>Zapomniałeś wprowadzić hasło!</p>';
  29. } else {
  30.    $p = escape_data($_POST['password']);
  31. }
  32.  
  33. if ($u && $p) {
  34.    //Odczytaj user_id i first_name dla podanej kombinacji nazwy użytkownika i hasla.
  35.    $query = "SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')";
  36.    $result = @mysql_query ($query);
  37.    $row = mysql_fetch_array ($result, MYSQL_NUM);
  38.    
  39.    if ($row) { //Z bazy danych wyciągnięto właściwy rekord
  40.        setcookie ('first_name', $row[1], time()+3600, '/', '', 0);
  41.        setcookie ('user_id', $row[0], time()+3600, '/', '', 0);
  42.        header ("Location: http://". $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']). "/zalogowany.php");
  43.    exit();
  44.    
  45.    } else {
  46.        $message = '<p>Wprowadzone przez Ciebie nazwa użytkownika i hasło nie zgadzają się z danymi w bazie.</p>';
  47.    }
  48.    
  49.    mysql_close();
  50.    
  51. } else {
  52.    $message .= '<p>Spróbuj jeszcze raz</p>';
  53. }
  54.  
  55. } //Koniec głównego formularza warunkowego Submit.
  56.  
  57. //Tytuł strony i nagłowek
  58. $page_title = 'Logowanie';
  59. include ('szablony/naglowek.inc');
  60.  
  61. //Jeżeli jest jakiś komunikat o błędzie, wyświetl go na stronioe.
  62. if (isset($message)) {
  63.    echo '<font color="red">'. $message .'</font>';
  64. }
  65. ?>
  66. <!-- Początek formularza -->
  67. <form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
  68. <fieldset><legend>Wprowadź wymagane informacje:</legend>
  69.  
  70. <p><b>Nazwa użytkownika</b> <input type="text" name="username" size="10" maxlength="20" value="<? if (isset($_POST['username'])) echo $_POST['username']; ?>" /></p>
  71. <p><b>Hasło:</b> <input type="password" name="password" size="20" maxlength="20" /></p>
  72.  
  73. </fieldset>
  74. <div align="center"><input type="submit" name="submit" value="Zaloguj się" /></div>
  75. </form>
  76. <!-- Koniec formularza -->
  77. <?
  78. include('szablony/stopka.inc');
  79. ?>


Skrypt rejestracji:

  1. <? #rejestracja.php
  2.  
  3. //Tytuł strony i nagłówek
  4. $page_title = 'Zarejestruj się!';
  5. include ('szablony/naglowek.inc');
  6.  
  7. if (isset($_POST['submit'])) { //Obsluga formularza
  8.  
  9. require_once('includes/mysql_connect.php'); //Połącz z bazą danych
  10.  
  11. //funkcja wstawiająca przed znakami specjalnymi znak odwrotengo ukośnika.
  12. function escape_data ($data) {
  13.    global $dbc; //Wymaga połączenia
  14.    if (ini_get('magic_quotes_gpc'))
  15.    {
  16.        $data = stripslashes($data);
  17.    }
  18.    return mysql_real_escape_string($data, $dbc);
  19. }
  20. //koniec funkcji
  21.  
  22.    $message = NULL; //nowa pusta zmienna
  23.    
  24.  //sprawdź imie
  25.  if (empty($_POST['first_name'])) {
  26.      $fn = FALSE;
  27.      $message .= '<p>Zapomniałeś podać swoje imię!</p>';
  28.  } else {
  29.      $fn = escape_data($_POST['first_name']);
  30.  }
  31.  
  32.  //sprawdź nazwisko
  33.  if (empty($_POST['last_name'])) {
  34.      $ln = FALSE;
  35.      $message .= '<p>Zapomniałeś podać swoje nazwisko!</p>';
  36.  } else {
  37.      $ln = escape_data($_POST['last_name']);
  38.  }
  39.  
  40.  //sprawdź adres email
  41.  if (empty($_POST['email'])) {
  42.     $e = FALSE;
  43.     $message .= '<p>Zapomnialeś podać swój adres e-mail!</p>';
  44.  } else {
  45.     $e = escape_data($_POST['email']);
  46.  }    
  47.  
  48.  //sprawdź nazwę użytkownika  
  49.  if (empty($_POST['username'])) {
  50.     $u = FALSE;
  51.     $message .= '<p>Zapomniałeś wprowadzić nazwę użytkownika</p>';
  52.  } else {
  53.     $u = escape_data($_POST['username']);
  54.  }
  55.  
  56.  //sprawdź czy użytkownik wprowadził hasło poprawnie w oba pola
  57. if (empty($_POST['password1'])) {
  58.    $p = FALSE;
  59.    $message .= '<p>Zapomniałeś wprowadzić hasło</p>';
  60. } else {
  61.    if ($_POST['password1'] == $_POST['password2']) {
  62.        $p = escape_data($_POST['password1']);
  63.        } else {
  64.        $p = FALSE;
  65.        $message .= '<p>Za drugin razem wpisałeś inne hasło!</p>';
  66.        }
  67.  }
  68.  
  69. if ($fn && $ln && $e && $u && $p) { //Jeżeli wszystko jest OK
  70.  
  71.  //Zarejestruj użytkownika w bazie danych
  72.    
  73.    $query = "SELECT user_id FROM users WHERE username='$u'";
  74.    $result = @mysql_query ($query);
  75.    if (mysql_num_rows($result) == 0) {
  76.  //Utwórz zapytanie
  77.    $query = "INSERT INTO users (username, first_name, last_name, email, password, registration_date) VALUES ('$u', '$fn', '$ln', '$e', PASSWORD('$p'), NOW() )";
  78.    $result = @mysql_query ($query); //Wykonaj zapytanie
  79.  if ($result) { //Jeżeli zostało wykonane
  80.    
  81.    //Wyślij maila jeśli trzeba
  82.     echo '<p><b>Zostałeś zarejestrowany!</b></p>';
  83.     include ('szablony/stopka.inc');
  84.     exit();
  85.    
  86.  } else { //Jeżeli nie zostało wykonane
  87.    $message .= '<p>Nie zostałeś zarejstrowany z powodu awarii naszego systemu.<br>Przepraszamy za kłopot</p><p>'. mysql_error() .'</p>';
  88.  }
  89.    } else {
  90.        $message = '<p>Ktoś wybrał już sobie tę nazwę użytkownika.</p>';
  91.    }
  92.  mysql_close(); //Zamknij połączenie z bazą danych
  93.  
  94.  } else {
  95.    $message .= '<p>Spróbuj jeszcze raz</p>';
  96.  }
  97. } //Koniec głównego wyrażenia warunkowego Submit
  98.  
  99. //Jeżeli jest jakiś komunikat o błędzie, wyświetl go na stronie
  100. if (isset($message)) {
  101. echo '<font color="red">'. $message .'</font>';
  102. }
  103. ?>
  104.  
  105. <form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
  106. <fieldset><legend>Wprowadź do poniższego formularza podane informacje:</legend>
  107. <p><b>Imię:</b> <input type="text" name="first_name" size="15" maxlenght="15" value="<? if (isset($_POST['first_name'])) echo $_POST['first_name']; ?>" /></p>
  108. <p><b>Nazwisko:</b> <input type="text" name="last_name" size="20" maxlenght="40" value"<? if (isset($_POST['last_name'])) echo $_POST['last_name']; ?>" /></p>
  109. <p><b>Adres E-mail:</b> <input type="text" name="email" size="40" maxlenght="60" value"<? if (isset($_POST['email'])) echo $_POST['email']; ?>" /></p>
  110. <p><b>Nazwa użytkownika:</b> <input type="text" name="username" size="20" maxlenght="40" value"<? if (isset($_POST['username'])) echo $_POST['username']; ?>" /></p>
  111. <p><b>Hasło:</b> <input type="password" name="password1" size="20" maxlenght="40" /></p>
  112. <p><b>Potwierdź hasło:</b> <input type="password" name="password2" size="20" maxlenght="40" /></p>
  113. </fieldset>
  114. <div align="center"><input type="submit" name="submit" value="Zarejestruj" /></div>
  115. </form>
  116. <?
  117. include('szablony/stopka.inc');
  118. ?>


Ten post edytował guzior 21.02.2009, 13:57:33
Go to the top of the page
+Quote Post
dziurson
post
Post #2





Grupa: Zarejestrowani
Postów: 145
Pomógł: 16
Dołączył: 19.07.2007
Skąd: Elbląg

Ostrzeżenie: (0%)
-----


usuń na chwile @ z linii zapytania do bazy i zobacz czy jest poprawne. Jeśli nic nie będzie to w warunku zamiast $row spróbuj mysql_num_rows($result) > 0
Go to the top of the page
+Quote Post
guzior
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2007

Ostrzeżenie: (0%)
-----


Cytat(dziurson @ 20.02.2009, 22:32:09 ) *
usuń na chwile @ z linii zapytania do bazy i zobacz czy jest poprawne. Jeśli nic nie będzie to w warunku zamiast $row spróbuj mysql_num_rows($result) > 0


dla którego pliku?

można to sprawdzić na tej www: http://guzior.jor.pl/www1/

Ten post edytował guzior 21.02.2009, 13:56:58
Go to the top of the page
+Quote Post
dziurson
post
Post #4





Grupa: Zarejestrowani
Postów: 145
Pomógł: 16
Dołączył: 19.07.2007
Skąd: Elbląg

Ostrzeżenie: (0%)
-----


chodziło mi o plik logowania
Go to the top of the page
+Quote Post
guzior
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2007

Ostrzeżenie: (0%)
-----


sprawdzałem nie działa :/ ,może to coś z kodowaniem bazy ?
Go to the top of the page
+Quote Post
dziurson
post
Post #6





Grupa: Zarejestrowani
Postów: 145
Pomógł: 16
Dołączył: 19.07.2007
Skąd: Elbląg

Ostrzeżenie: (0%)
-----


no też możliwe. a jakie masz w bazie i jakie na stronie?? jeśli się różnią to użyj mysql_query("SET NAMES nazwa"); gdzie 'nazwa' to kodowanie bazy. np. latin1
Go to the top of the page
+Quote Post
guzior
post
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2007

Ostrzeżenie: (0%)
-----


ustawione kodowanie jest takie latin2_general_ci a na stronie utf-8

Ten post edytował guzior 27.02.2009, 13:44:09
Go to the top of the page
+Quote Post
dziurson
post
Post #8





Grupa: Zarejestrowani
Postów: 145
Pomógł: 16
Dołączył: 19.07.2007
Skąd: Elbląg

Ostrzeżenie: (0%)
-----


No to po wyborze bazy danych ale przed zapytaniami dajesz to
mysql_query("SET NAMES latin2");
Go to the top of the page
+Quote Post
guzior
post
Post #9





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2007

Ostrzeżenie: (0%)
-----


Cytat(dziurson @ 27.02.2009, 19:05:19 ) *
No to po wyborze bazy danych ale przed zapytaniami dajesz to
mysql_query("SET NAMES latin2");


dane połączenia do bazy danych i wybór jest w osobnym pliku mysql_connect.php
Go to the top of the page
+Quote Post
dziurson
post
Post #10





Grupa: Zarejestrowani
Postów: 145
Pomógł: 16
Dołączył: 19.07.2007
Skąd: Elbląg

Ostrzeżenie: (0%)
-----


no to wrzuć to do tego osobnego pliku. Ale coś nie sądzę by to rozwiązało problem. Trzeba analizować skrypt linijka po linijce. Dodawać w różnych miejscach wypisywanie i sprawdzać czy wszystko jest tak jak powinno.
Go to the top of the page
+Quote Post
guzior
post
Post #11





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2007

Ostrzeżenie: (0%)
-----


Cytat(dziurson @ 28.02.2009, 10:05:37 ) *
no to wrzuć to do tego osobnego pliku. Ale coś nie sądzę by to rozwiązało problem. Trzeba analizować skrypt linijka po linijce. Dodawać w różnych miejscach wypisywanie i sprawdzać czy wszystko jest tak jak powinno.

nie rozwiazało problemu :/
mogę Ci podać adres www gdzie można to przetestować
Go to the top of the page
+Quote Post
dziurson
post
Post #12





Grupa: Zarejestrowani
Postów: 145
Pomógł: 16
Dołączył: 19.07.2007
Skąd: Elbląg

Ostrzeżenie: (0%)
-----


Ale mi nic nie da że zobaczę to z zewnątrz. Musisz sobie sprawdzić wszystkie elementy. Czy do bazy dobrze zapisuje, robić co kawałek test zmiennych czy nie zmieniły się, sprawdzić zapytanie przez or die(). Usuwanie błędów to żmudna praca
Go to the top of the page
+Quote Post
guzior
post
Post #13





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2007

Ostrzeżenie: (0%)
-----


rozwiązałem ten problem pisząc od nowa i łatwiejszy skrypt

mam jeszcze małe pytanie otóż mam w pliku index.php dodana pętle switch i podaje linki jako index.php?go=nr ale chciałbym dołączyć do tego stronicowanie i nie wiem jak to zrobić pomógłby ktoś?
Go to the top of the page
+Quote Post
erix
post
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Poszukaj na forum; stronicowanie już było n-razy omawiane.
Go to the top of the page
+Quote Post
guzior
post
Post #15





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2007

Ostrzeżenie: (0%)
-----


Cytat(erix @ 21.03.2009, 19:16:56 ) *
Poszukaj na forum; stronicowanie już było n-razy omawiane.


tak wiem tylko nie wiem jak to połączyć z moją pętlą switch
Go to the top of the page
+Quote Post
erix
post
Post #16





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. switch" title="Zobacz w manualu PHP" target="_manual, to nie pętla
  2. łączysz z zapytaniem do bazy; widać, nie szukałeś albo zrobiłeś to bardzo powierzchownie
Go to the top of the page
+Quote Post
guzior
post
Post #17





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2007

Ostrzeżenie: (0%)
-----


zrobiłem ale teraz mam problem ,chciałem dodać stronicowanie do mojej księgi wpisów, ale po kliknięciu w link przejścia na następna strona przechodzi na główną stronę, pomoże ktoś?
Go to the top of the page
+Quote Post
Spawnm
post
Post #18





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




tak , jak tylko pokażesz co zrobiłeś (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
guzior
post
Post #19





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2007

Ostrzeżenie: (0%)
-----


Cytat(Spawnm @ 23.03.2009, 16:29:15 ) *
tak , jak tylko pokażesz co zrobiłeś (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


użyłem tego skryptu
a to jest www gdzie mam problem klik

kod mojej księgi:
  1. <?
  2. include('include/connect.php');
  3. ?>
  4.  
  5. <?
  6. echo '<div id="news" class="boxed"><h2 class="title">Ilość wpisów</h2>';
  7. list($ile)=mysql_fetch_row(mysql_db_query("SELECT * FROM ksiega"));
  8. echo("<center>Wpisów: $ile<br></center>");
  9. echo '</div>';
  10. ?>
  11.  
  12. <div id="news" class="boxed"><h2 class="title">Księga wpisów</h2>
  13. <form method="post">
  14.  <table align="center" border="0" cellpadding="0" cellspacing="0">
  15.    <tr>
  16.        <td>
  17.            Nazwa użytkownika:
  18.        </td>
  19.        <td style="padding-left: 5px">
  20.            <input type="text" name="autor" size="46">
  21.        </td>
  22.    </tr>
  23.    <tr>
  24.        <td>
  25.            Treść:
  26.        </td>
  27.        <td style="padding-left: 5px">
  28.            <textarea rows="2" name="tresc"  cols="35"></textarea>
  29.        </td>
  30.    </tr>
  31.  </table>
  32.  <table><tr><td style="padding-top: 5px; padding-bottom: 13px">
  33.        <input type="submit" value="Dodaj"><input type="reset" value="Reset">
  34.  </td></tr></table>
  35. </form>
  36. </div>
  37. <?
  38. // odbieramy dane z formularza
  39. $tytul = $_POST['autor'];
  40. $tresc = $_POST['tresc'];
  41.  
  42.  
  43. if($tytul && $tresc) {
  44.        
  45.    $ins = @mysql_query("INSERT INTO ksiega SET autor='$autor', tresc='$tresc'");
  46.    
  47.    if($ins) echo "Wpis został dodany.";
  48.    else echo "Błąd. nie udało się dodac nowego wpisu";
  49.    
  50.    mysql_close();
  51.    
  52. }  
  53. //wyswietlanie
  54.  
  55. define('ILOSC_WYNIKOW_NA_STRONIE', 5);
  56. /*
  57.  * połączenie z bazą, itp.
  58.  */
  59.  
  60. $SQL = "SELECT SQL_CALC_FOUND_ROWS *
  61.       FROM ksiega
  62.       ORDER BY date ASC
  63.       LIMIT ".mysql_escape_string((int)$_GET['porcja']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
  64. // pobiera ILOSC_NA_STRONIE rekordów z bazy, sortując wg daty rosnąco, zaczynając od $_GET['porcja']*ILOSC_NA_STRONIE
  65. $RES = mysql_query($SQL); // wykonujemy zapytanie
  66. while($AFR = mysql_fetch_assoc($RES)){
  67.   /*Wyświetlanie wyników, przykładowo:*/
  68. echo '<div id="news" class="boxed"><h2 class="title">Wpisy</h2>';
  69. echo '<table align="center" border="0" cellpadding="0" cellspacing="0" width="600" bordercolor="#ffffff">';
  70. echo '<tr>';
  71. echo '<td valign="middle">';
  72. echo '<table border="0" cellpadding="0" cellspacing="0">';
  73. echo '<tr>';
  74. echo '<td style="padding-left: 7px" valign="middle" align="left" width="260" height="20" bgcolor="#800000">';
  75. echo '<font color="white">';
  76. echo 'Dodał: '.$AFR['autor'] .'';
  77. echo '</font>';
  78. echo '</td>';
  79. echo '<td style="padding-right: 7px" valign="middle" align="right" width="360" height="20" bgcolor="#800000">';
  80. echo '<font color="white">';
  81. echo $AFR['date'];
  82. echo '</font>';
  83. echo '</tr>';
  84. echo '</table>';
  85. echo '</td>';
  86. echo '</tr>';
  87. echo '<tr>';
  88. echo '<td style="padding-top: 7px; padding-bottom: 7px; padding-left: 7px; padding-right: 7px" align="center">';
  89. echo $AFR['tresc'];
  90. echo '</td>';
  91. echo "</tr>";
  92. echo "</table>";
  93. echo "</div>";
  94. }
  95.  
  96. // w inny sposób pobieramy ilosc danych w bazie
  97. $SQL = "SELECT FOUND_ROWS() as Ilosc";
  98. $RES= mysql_query($SQL);
  99. list($iloscWpisow) = mysql_fetch_row($RES);
  100.  
  101. //Teraz wypadało by wyświetlić jakąś nawigację
  102. echo '<div id="news" align="center">';
  103. //jeśli nie jesteśmy na pierwszej stronie
  104.  
  105. if($_GET['porcja']>0){
  106.    //wyswietlamy link do poprzedniej strony
  107.   echo '<a href="?porcja='.($_GET['porcja']-1).'">Poprzednie</a> ';
  108. }
  109.  
  110. for($i = 0;$i<=floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE);$i++){
  111.   echo '<a href="?porcja='.($i).'">[ '.($i+1).' ]</a> ';
  112. }
  113. //jeśli nie jesteśmy na ostatniej stronie
  114. if($_GET['porcja']<floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE)){
  115.  //wyświetlamy link do nastepnej strony
  116.   echo ' <a href="?porcja='.($_GET['porcja']+1).'">następne</a>';
  117. }
  118. echo '</div>';
  119.  
  120. ?>


Ten post edytował guzior 23.03.2009, 16:49:41
Go to the top of the page
+Quote Post
Spawnm
post
Post #20





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




gubisz zmienną get o nazwie go
daj ?go=21&porcja=1
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.08.2025 - 20:12