Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]rejestracja - przesłanie danych do bazy
Roller
post 6.12.2014, 02:02:04
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.04.2014

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


Witam. Potrzebuje małej pomocy. Ja sam głupek nie mogę sobie poradzić.
Opiszę sytuacje:
Mam stronkę, szybkie logowanie. Wpisuje dane jeśli nie ma ich w bazie to dodaje i mnie loguje przenoszac na kolejna strone. Natomaist podczas trwania tej sesji wchodze na kolejna strone i tam chce przeprowadzic szybka rejestracja, która doda do bazy nowe 3 rekordy. (nazwa, opis, pozniej jeszcze tematyka).
Rekordy maja byc dodane do zalogowanej obecnie sesji.
Jeśli trwa już zalogowana sesja to dodaje poprzez formularz dodatkowe rekordy do użytkownika w bazie danych.

Czyli do jego ID i NICKU doda: nazwa, opis, tematyka, ranga.

Ranga będzie losowo przyznawana (bez powtórzeń).

Następnie w kolejnym pliku gdy sprawdzi w sesji czy zgadza się NICK i RANGA to da mu dostęp do pewnej funkcji.

Rekordy mam utworzone w tabeli, chodź nie wiem czy o prawidłowych właściwiościach.

  1. <?php
  2. require_once('cfg.inc.php');
  3. require_once('libs/ShoutBox.class.php');
  4. require_once('libs/ShoutBoxDBMysql.class.php');
  5.  
  6. ini_set( 'display_errors', 'On' );
  7. error_reporting( E_ALL );
  8.  
  9. ?>
  10. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  11. <html>
  12. <head>
  13. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  14. <title>ShoutBox</title>
  15. </head>
  16. <body>
  17. <?php
  18. require_once('libs/ShoutBox.class.php');
  19. require_once('libs/ShoutBoxDBMysql.class.php');
  20. $er = array();
  21. $jl = false; //w ifach jesli damy to na true, to na podstawie tego przekierujemy na strone shouta.
  22. if (!empty($_POST) && $_SESSION['nick']){
  23. if (empty($_POST['nazwa']))
  24. $er[] = 'Podaj nazwa';
  25. if (empty($_POST['opis']))
  26. $er[] = 'opis';
  27. if (empty($_POST['color']))
  28. $color = '000000';
  29. else{
  30. if (preg_match('/^[0-9a-f]{6}$/i',$_POST['color']))
  31. $color = $_POST['color'];
  32. else
  33. $er[] = 'Podany kolor jest nieprawidłowy';
  34. }
  35. if (empty($er)){
  36. $nazwa = htmlspecialchars($_POST['nazwa'], ENT_QUOTES);
  37. ShoutBoxDBMysql::MysqlConnect();
  38. $sql = 'select ID, NICK from ShoutBoxUser where nazwa=\''.$nazwa.'\'';
  39. $res = mysql_query($sql);
  40. if (!$res)
  41. $er[] = 'Błąd bazy danych';
  42. else{
  43. if (mysql_numrows($res) > 0){
  44. $row = mysql_fetch_array($res);
  45. $nick = $row['nick'];
  46. if ($nick == ($_SESSION['nick'])){
  47. $_SESSION['nazwa'] = $nazwa;
  48. $_SESSION['opis'] = $opis;
  49. $_SESSION['id'] = $row['ID'];
  50. if (file_exists('online.txt'))
  51. unlink('online.txt');
  52. $up = array();
  53. if ($cfg_shoutbox['user_activity'])// || isset($_POST['savecolor']))
  54. $up[] = 'LAST_ACTIVE_TIME=now()';
  55. if (isset($_POST['savecolor']))
  56. $up[] = "COLOR='$color'";
  57. if (!empty($up))
  58. mysql_query('update ShoutBoxUser set '.implode(',',$up). ' where ID='.$row['ID']);
  59. $_SESSION['justlogged'] = true;
  60. $jl = true;
  61.  
  62. //
  63. }
  64. else
  65. $er[] = 'Taki login już istnieje, a ty podałeś błędne hasło';
  66. } else { //brak takiego loginu to dodajemy do bazy i logujemy
  67. $sql = "insert into ShoutBoxUser values (null, '$nazwa', '$color', now())";
  68. $res = mysql_query($sql);
  69. if ($res)
  70. $er[] = 'Błąd bazy danychhh';
  71. else {
  72. $_SESSION['nazwa'] = $nazwa;
  73. $_SESSION['id'] = mysql_insert_id();
  74. $_SESSION['justlogged'] = true;
  75. $jl = true;
  76. if (file_exists('online.txt'))
  77. unlink('online.txt');
  78. }
  79. }
  80. }
  81. }
  82. }
  83. if ($jl){//po poprawnym zalogowaniu przenosimy na strone shouta
  84. echo 'dziala';
  85. }
  86.  
  87. if (!empty($er)){
  88. echo '<div style="color:red">';
  89. foreach ($er as $error)
  90. echo $error.'<br />';
  91. echo '</div>';
  92. }
  93. ?>
  94. <form method="post">
  95. <table>
  96. <tr>
  97. <td><label>nazwa: </label></td>
  98. <td><input type="text" name="nazwa" /></td><td> (jesli jestes nowy - podaj nowy nick, jeśli masz już konto - podaj swój nick)</td>
  99. </tr><tr>
  100. <td><label>opis: </label></td>
  101. <td><input type="text" name="opis" /></td><td>(jesli jestes nowy - podaj nowe hasło, jeśli masz już konto - podaj swoje hasło)</td>
  102. </tr><tr>
  103. <td><label>Kolor: </label></td>
  104. <td><input type="text" name="color" /></td><td>(podaj kolor, pod jakim chcesz być widziany. Kolor w postaci RRGGBB, np: FF00FF)</td>
  105. </tr><tr>
  106. <td colspan="3"><input type="checkbox" name="savecolor" checked="checked" />Zapisać kolor w bazie</td>
  107. </tr>
  108. <tr>
  109. <td colspan="3"><input type="submit" value="Start" /></td>
  110. </tr>
  111. </table>
  112. </form>
  113. <p>Nick "blocked" nie będzie mógł pisać.</p>
  114. </body>
  115. </html>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
ghastblood
post 6.12.2014, 13:54:37
Post #2





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


no i w czym problem ?
Go to the top of the page
+Quote Post
Roller
post 6.12.2014, 15:35:12
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.04.2014

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


Wygląda na to, że zapomniałem napisać. Wyczerpanie totalne.
Problemem w tym jest, że owy skrypt po wysłaniu formularza nie wprowadza rekordów do bazy danych.
Go to the top of the page
+Quote Post
ghastblood
post 6.12.2014, 16:18:19
Post #4





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


jakieś błędy czy coś nie mam teraz dostępu do serwera więc ciężko mi sprwadzić kod. Napewno możesz zrobić tak

  1. $res = mysql_query($sql) or die(mysql_error());


po za tym zrobił byś porządek z kodem odziel logike od widoku wywal stare metody łączenia się z mysql przerzuć się na PDO
Go to the top of the page
+Quote Post
Roller
post 6.12.2014, 17:22:43
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.04.2014

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


Przerabiam ten kod rejestracji/logowania, który mi służy do dodania użytkownika do bazy i stworzenie sesji -->
  1. <?php
  2. require_once('cfg.inc.php');
  3. ?>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>ShoutBox</title>
  9. </head>
  10. <body>
  11. <?php
  12. require_once('libs/ShoutBox.class.php');
  13. require_once('libs/ShoutBoxDBMysql.class.php');
  14. $er = array();
  15. $jl = false; //w ifach jesli damy to na true, to na podstawie tego przekierujemy na strone shouta.
  16. if (!empty($_POST)){
  17. if (empty($_POST['nick']))
  18. $er[] = 'Podaj nick';
  19. if (empty($_POST['pass']))
  20. $er[] = 'Podaj hasło';
  21. if (empty($_POST['color']))
  22. $color = '000000';
  23. else{
  24. if (preg_match('/^[0-9a-f]{6}$/i',$_POST['color']))
  25. $color = $_POST['color'];
  26. else
  27. $er[] = 'Podany kolor jest nieprawidłowy';
  28. }
  29. if (empty($er)){
  30. $nick = htmlspecialchars($_POST['nick'], ENT_QUOTES);
  31. ShoutBoxDBMysql::MysqlConnect();
  32. $sql = 'select ID, PASS from ShoutBoxUser where NICK=\''.$nick.'\'';
  33. $res = mysql_query($sql);
  34. if (!$res)
  35. $er[] = 'Błąd bazy danych';
  36. else{
  37. if (mysql_numrows($res) > 0){
  38. $row = mysql_fetch_array($res);
  39. $pass = $row['PASS'];
  40. if ($pass == sha1($_POST['pass'])){
  41. $_SESSION['nick'] = $nick;
  42. $_SESSION['id'] = $row['ID'];
  43. if (file_exists('online.txt'))
  44. unlink('online.txt');
  45. $up = array();
  46. if ($cfg_shoutbox['user_activity'])// || isset($_POST['savecolor']))
  47. $up[] = 'LAST_ACTIVE_TIME=now()';
  48. if (isset($_POST['savecolor']))
  49. $up[] = "COLOR='$color'";
  50. if (!empty($up))
  51. mysql_query('update ShoutBoxUser set '.implode(',',$up). ' where ID='.$row['ID']);
  52. $_SESSION['justlogged'] = true;
  53. $jl = true;
  54.  
  55. //
  56. }
  57. else
  58. $er[] = 'Taki login już istnieje, a ty podałeś błędne hasło';
  59. } else { //brak takiego loginu to dodajemy do bazy i logujemy
  60. $sql = "insert into ShoutBoxUser values (null,'$nick', '".sha1($_POST['pass'])."','$color', now())";
  61. $res = mysql_query($sql);
  62. if (!$res)
  63. $er[] = 'Błąd bazy danych';
  64. else {
  65. $_SESSION['nick'] = $nick;
  66. $_SESSION['id'] = mysql_insert_id();
  67. $_SESSION['justlogged'] = true;
  68. $jl = true;
  69. if (file_exists('online.txt'))
  70. unlink('online.txt');
  71. }
  72. }
  73. }
  74. }
  75. }
  76. if ($jl){//po poprawnym zalogowaniu przenosimy na strone shouta
  77. header('Location: ShoutBoxDisplay.php');
  78. }
  79.  
  80. if (!empty($er)){
  81. echo '<div style="color:red">';
  82. foreach ($er as $error)
  83. echo $error.'<br />';
  84. echo '</div>';
  85. }
  86. ?>
  87. <form method="post">
  88. <table>
  89. <tr>
  90. <td><label>Nick: </label></td>
  91. <td><input type="text" name="nick" /></td><td> (jesli jestes nowy - podaj nowy nick, jeśli masz już konto - podaj swój nick)</td>
  92. </tr><tr>
  93. <td><label>Hasło: </label></td>
  94. <td><input type="password" name="pass" /></td><td>(jesli jestes nowy - podaj nowe hasło, jeśli masz już konto - podaj swoje hasło)</td>
  95. </tr><tr>
  96. <td><label>Kolor: </label></td>
  97. <td><input type="text" name="color" /></td><td>(podaj kolor, pod jakim chcesz być widziany. Kolor w postaci RRGGBB, np: FF00FF)</td>
  98. </tr><tr>
  99. <td colspan="3"><input type="checkbox" name="savecolor" checked="checked" />Zapisać kolor w bazie</td>
  100. </tr>
  101. <tr>
  102. <td colspan="3"><input type="submit" value="Start" /></td>
  103. </tr>
  104. </table>
  105. </form>
  106. <p>Nick "blocked" nie będzie mógł pisać.</p>
  107. </body>
  108. </html>



Nie liczę na zupełnego gotowca. Cieszył bym się jednak by pobrać zalogowaną sejse, sprawdzić czy istnieje, jeśli tak to za pomocą formularza wysłać rekord NAZWA, RANGA, OPIS do bazy danych. W bazie danych mam 2 tabele i tylko z jednej chce pobrac dane.

EDIT:
Mam tak obecnie:

  1. <?php
  2. require ('headerr.php');
  3.  
  4. ini_set( 'display_errors', 'On' );
  5. error_reporting( E_ALL );
  6.  
  7.  
  8. $sql_host = &#8218;db4free.net’;
  9. $sql_user = &#8218;ktoadmin’;
  10. $sql_user = &#8218;123456’;
  11. $sql_baza = &#8218;ktocbapl’;
  12.  
  13. if (mysql_connect($sql_host, $sql_user, $sql_password) and mysql_select_db($sql_baza)) {
  14. $zapytanie = mysql_query(&#8222;SELECT * FROM shoutboxuser”);
  15. if ($zapytanie) {
  16.  
  17. while ($wynik = mysql_fetch_array($zapytanie)) {
  18. echo $wynik["nick"].&#8221;<br />”;
  19.  
  20.  
  21. $er = array();
  22. $jl = false; //w ifach jesli damy to na true, to na podstawie tego przekierujemy na strone shouta.
  23. if (!empty($_POST) && $_SESSION['nick']){
  24. if (empty($_POST['nazwa']))
  25. $er[] = 'Podaj nazwa';
  26. if (empty($_POST['opis']))
  27. $er[] = 'opis';
  28. if (empty($_POST['color']))
  29. $color = '000000';
  30. else{
  31. if (preg_match('/^[0-9a-f]{6}$/i',$_POST['color']))
  32. $color = $_POST['color'];
  33. else
  34. $er[] = 'Podany kolor jest nieprawidłowy';
  35. }
  36. if (empty($er)){
  37. $nazwa = htmlspecialchars($_POST['nazwa'], ENT_QUOTES);
  38. ShoutBoxDBMysql::MysqlConnect();
  39. $sql = 'select ID, NICK from ShoutBoxUser where nazwa=\''.$nazwa.'\'';
  40. $res = mysql_query($sql);
  41. if (!$res)
  42. $er[] = 'Błąd bazy danych';
  43. else{
  44. if (mysql_numrows($res) > 0){
  45. $row = mysql_fetch_array($res);
  46. $nick = $row['nick'];
  47. if ($nick == ($_SESSION['nick'])){
  48. $_SESSION['nazwa'] = $nazwa;
  49. $_SESSION['opis'] = $opis;
  50. $_SESSION['id'] = $row['ID'];
  51. if (file_exists('online.txt'))
  52. unlink('online.txt');
  53. $up = array();
  54. if ($cfg_shoutbox['user_activity'])// || isset($_POST['savecolor']))
  55. $up[] = 'LAST_ACTIVE_TIME=now()';
  56. if (isset($_POST['savecolor']))
  57. $up[] = "COLOR='$color'";
  58. if (!empty($up))
  59. mysql_query('update ShoutBoxUser set '.implode(',',$up). ' where ID='.$row['ID']);
  60. $_SESSION['justlogged'] = true;
  61. $jl = true;
  62.  
  63. //
  64. }
  65. else
  66. $er[] = 'Taki login już istnieje, a ty podałeś błędne hasło';
  67. } else { //brak takiego loginu to dodajemy do bazy i logujemy
  68. $sql = "insert into ShoutBoxUser values (null, '$nazwa', '$color', now())";
  69. $res = mysql_query($sql);
  70. if ($res)
  71. $er[] = 'Błąd bazy danychhh';
  72. else {
  73. $_SESSION['nazwa'] = $nazwa;
  74. $_SESSION['id'] = mysql_insert_id();
  75. $_SESSION['justlogged'] = true;
  76. $jl = true;
  77. if (file_exists('online.txt'))
  78. unlink('online.txt');
  79. }
  80. }
  81. }
  82. }
  83. }
  84. if ($jl){//po poprawnym zalogowaniu przenosimy na strone shouta
  85. echo 'dziala';
  86. }
  87.  
  88. if (!empty($er)){
  89. echo '<div style="color:red">';
  90. foreach ($er as $error)
  91. echo $error.'<br />';
  92. echo '</div>';
  93. }
  94. }
  95. }
  96. else{
  97. echo 'nie laczy z baza';
  98. }
  99. ?>


i zwraca błąd
  1. Parse error: syntax error, unexpected 'shoutboxuserâ' (T_STRING) in /virtual/kto.cba.pl/zaloz.php on line 15


Błędy w składni jeśli dobrze się domyślam.

Ten post edytował Roller 6.12.2014, 17:40:51
Go to the top of the page
+Quote Post
fastlone
post 6.12.2014, 18:08:26
Post #6





Grupa: Zarejestrowani
Postów: 95
Pomógł: 15
Dołączył: 3.06.2010

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


  1. $res = mysql_query($sql);
  2. if ($res)
  3. $er[] = 'Błąd bazy danychhh';

Są to linijki 70-72, zamień to na:
  1. $res = mysql_query($sql);
  2. if (!$res)
  3. $er[] = 'Błąd bazy danychhh';

Zapomniałeś o wykrzykniku snitch.gif


--------------------
Nie bój się kliknąć
Go to the top of the page
+Quote Post
Roller
post 7.12.2014, 00:35:23
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.04.2014

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


Błąd:
  1. Parse error: syntax error, unexpected 'else' (T_ELSE) in /virtual/kto.cba.pl/zaloz.php on line 6


kod:
  1. <?php
  2. require_once('cfg.inc.php');
  3. ?>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>ShoutBox</title>
  9. </head>
  10. <body>
  11. <?php
  12. require_once('libs/ShoutBox.class.php');
  13. require_once('libs/ShoutBoxDBMysql.class.php');
  14. $er = array();
  15. $jl = false; //w ifach jesli damy to na true, to na podstawie tego przekierujemy na strone shouta.
  16. if (!empty($_POST)){
  17. if (empty($_POST['nazwa']))
  18. $er[] = 'Podaj nazwe';
  19. if (empty($_POST['opis']))
  20. $er[] = 'Podaj opis';
  21. if (empty($_POST['color']))
  22. $color = '000000';
  23. else{
  24. if (preg_match('/^[0-9a-f]{6}$/i',$_POST['color']))
  25. $color = $_POST['color'];
  26. else
  27. $er[] = 'Podany kolor jest nieprawidłowy';
  28. }
  29. if (empty($er)){
  30. $nick = htmlspecialchars($_POST['nazwa'], ENT_QUOTES);
  31. ShoutBoxDBMysql::MysqlConnect();
  32. $sql = 'select ID, PASS from ShoutBoxUser where NICK=\''.$nick.'\'';
  33. $res = mysql_query($sql);
  34. if (!$res)
  35. $er[] = 'Błąd bazy danych';
  36. else{
  37. if (mysql_numrows($res) > 0){
  38. $row = mysql_fetch_array($res);
  39. $_SESSION['nazwa'] = $nazwa;
  40. $_SESSION['opis'] = $opis;
  41. $_SESSION['id'] = $row['ID'];
  42. if (file_exists('online.txt'))
  43. unlink('online.txt');
  44. $up = array();
  45. if ($cfg_shoutbox['user_activity'])// || isset($_POST['savecolor']))
  46. $up[] = 'LAST_ACTIVE_TIME=now()';
  47. if (isset($_POST['savecolor']))
  48. $up[] = "COLOR='$color'";
  49. if (!empty($up))
  50. mysql_query('update ShoutBoxUser set '.implode(',',$up). ' where ID='.$row['id']);
  51. $_SESSION['justlogged'] = true;
  52. $jl = true;
  53.  
  54. //
  55. }
  56. else
  57. $er[] = 'Taki login już istnieje, a ty podałeś błędne hasło';
  58. } else { //brak takiego loginu to dodajemy do bazy i logujemy
  59. $sql = "insert into ShoutBoxUser values (null,'$nazwa', '$opis', '$color', now())";
  60. $res = mysql_query($sql);
  61. if (!$res)
  62. $er[] = 'Błąd bazy danychhh';
  63. else {
  64. $_SESSION['nazwa'] = $nazwa;
  65. $_SESSION['id'] = mysql_insert_id();
  66. $_SESSION['justlogged'] = true;
  67. $jl = true;
  68. if (file_exists('online.txt'))
  69. unlink('online.txt');
  70. }
  71. }
  72. }
  73. }
  74. }
  75. if ($jl){//po poprawnym zalogowaniu przenosimy na strone shouta
  76. echo 'dziala';
  77. }
  78.  
  79. if (!empty($er)){
  80. echo '<div style="color:red">';
  81. foreach ($er as $error)
  82. echo $error.'<br />';
  83. echo '</div>';
  84. }
  85. ?>
  86. <form method="post">
  87. <table>
  88. <tr
  89. <td><label>Nazwa: </label></td>
  90. <td><input type="text" name="nazwa" /></td><td> (jesli jestes nowy - podaj nowy nick, jeśli masz już konto - podaj swój nick)</td>
  91. </tr><tr>
  92. <td><label>opis: </label></td>
  93. <td><input type="text" name="opis" /></td><td>(jesli jestes nowy - podaj nowe hasło, jeśli masz już konto - podaj swoje hasło)</td>
  94. </tr><tr>
  95. <td><label>Kolor: </label></td>
  96. <td><input type="text" name="color" /></td><td>(podaj kolor, pod jakim chcesz być widziany. Kolor w postaci RRGGBB, np: FF00FF)</td>
  97. </tr><tr>
  98. <td colspan="3"><input type="checkbox" name="savecolor" checked="checked" />Zapisać kolor w bazie</td>
  99. </tr>
  100. <tr>
  101. <td colspan="3"><input type="submit" value="Start" /></td>
  102. </tr>
  103. </table>
  104. </form>
  105. <p>Nick "blocked" nie będzie mógł pisać.</p>
  106. </body>
  107. </html>


Nie rozumiem. Prosiłbym o trafną podpowiedź.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 08:37