Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]rejestracja - przesłanie danych do bazy
Forum PHP.pl > Forum > Przedszkole
Roller
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>
ghastblood
no i w czym problem ?
Roller
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.
ghastblood
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
Roller
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.
fastlone
  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
Roller
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ź.
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.