Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Skrypt nie chce wychwycić danej
Forum PHP.pl > Forum > Przedszkole
goukan
Witam. Mam problem z pewnym skryptem. Zainstalowałem sobie forum bardzo ubogie, ale takie właśnie mi chodzi. Jak to powinno wyglądać?
Klikam przycisk tworze temat-->wpisuje wszystko i akceptuje--> do bazy danych dopisywana jest zawartosc tego newsa oraz ID osoby ktora go napisala (kazdy uzytkownik ma swoje id)
Problem to: Do bazy danych tworząc temat, nie zapisuje się ta właśnie dana z ID. Wszystkie inne się zapisują prócz tej.

Do każdego pliku z forum includowane jest config gdzie jest łączenie z bazą danych oraz jest dodatkowo w nim zaincludowane init.php w którym jest to:
  1. <?php
  2. //This page let initialize the forum by checking for example if the user is logged
  3. header('Content-type: text/html;charset=UTF-8');
  4. if(!isset($_SESSION['username']) and isset($_COOKIE['username'], $_COOKIE['password']))
  5. {
  6. $cnn = mysql_query('select password,id from users where username="'.mysql_real_escape_string($_COOKIE['username']).'"');
  7. $dn_cnn = mysql_fetch_array($cnn);
  8.  
  9. if(sha1($dn_cnn['password'])==$_COOKIE['password'] and mysql_num_rows($cnn)>0)
  10. {
  11. $_SESSION['username'] = $_COOKIE['username'];
  12. $_SESSION['userid'] = $dn_cnn['id'];
  13. }
  14. }
  15. ?>


Skrypt nie mój, tylko pobierany dlatego nie wiem czy to to, ale myślę, że to może mieć coś wspólnego z tym.
Kod na tworzenie tematu:
  1. <?php
  2. if(isset($_POST['message'], $_POST['title']) and $_POST['message']!='' and $_POST['title']!='')
  3. {
  4. include('bbcode_function.php');
  5. $title = $_POST['title'];
  6. $message = $_POST['message'];
  7. {
  8. $title = stripslashes($title);
  9. $message = stripslashes($message);
  10. }
  11. $title = mysql_real_escape_string($title);
  12. $message = mysql_real_escape_string(bbcode_to_html($message));
  13. if(mysql_query('insert into topics (parent, id, id2, title, message, authorid, timestamp, timestamp2) select "'.$id.'", ifnull(max(id), 0)+1, "1", "'.$title.'", "'.$message.'", "' .$_SESSION['userid']. '", "'.time().'", "'.time().'" from topics'))
  14. {
  15. ?>
  16. <div class="message">Temat został stworzony pomyślnie.<br />
  17. <a href="list_topics.php?parent=<?php echo $id; ?>">Przejdź do forum</a></div>
  18. <?php
  19. }
  20. else
  21. {
  22. echo 'An error occurred while creating the topic.';
  23. }
  24. }
  25. else
  26. {
  27. ?>


Jak widać w tym zapytaniu do autorid powinno zapisać się userid który napisał temat, jednak to się nie dzieje. Jest poprostu 0. Tak samo zresztą jest jeśli chodzi o możliwość odpowiadania w tematach. Odpiszę 10 postów w temacie to pisze "10 odpowiedzi" jednak gdy wejdę do tematu to tych odpowiedzi nie widać z tego względu, że nie ma w bazie danych tej jednej danej o id danego zalogowanego uzytkownika
Posio
Wiem, że może ten post Ci zbyt nie pomoże, ale zastanów się po prostu nad zmianą tego forum na inne, oparte o nieco nowsze standardy ?
goukan
Tylko to forum odpowiada moim standardom, więc go nie zmienie muszę go jakoś naprawić, ale ja nie wiem jak, jedynie ktoś może mi pomóc.
miras
Może spróbuj dodać do pliku przy init.php

to:

  1. $id=$_SESSION['userid'];


bo nigdzie nie widziałem deklaracji zmiennej $id..
goukan
Bardzo dziwna sprawa... Wrzuciłem pliki tego forum na inną domene, Same pliki, ale podpięte pod tą samą baze danych i o dziwo tam działa a u mnie nie.. Nie mam pojęcia o co chodzi... Ta sama baza, ten sam skrypt, a tu działa a tam nie..

Teraz całkiem wszystko się pochrzaniło;/

dodam ze to: $_SESSION['userid'] jest praktycznie w kazdym pliku tego skryptu wywoływane

@Add

Już wiem w czym tkwi błąd..
Mam stronę i tam jest wiadomo rejestracja i logowanie.. Mam też forum w osobnym folderze i aby dostać się do niego to muszę wejść poprzez adres: www.twojastrona.pl/forum
tam odpala się index gdzie przechodzi już normalnie do tematów jeśli jest się zalogoawnym, a jeśli nie to pokazuje panel logowania. Teraz tak w plikach forum mam jeszcze plik :login.php i jeśli loguję się przez niego to o dziwo wszyystko działa i pokazują się tematy, odpowiedzi, i wszystko wpisuję się do bazy danych. Czyli to znaczy, że problem jest z moim plikiem logowania na stronę. Oto on:

logowanie.php
  1. <?php
  2. session_start(); // rozpoczęcie sesji
  3. ?>
  4.  
  5. <?php include('header.php'); ?>
  6.  
  7. <h2>&raquo; Zaloguj się</h2>
  8. <div class="content">
  9.  
  10. <?php
  11.  
  12. if (!isset($_SESSION['username'])) { // dostęp dla niezalogowanego użytkownika
  13.  
  14. if ($_POST['wyslane']) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  15.  
  16. include 'inc/db.php'; // połączenie się z bazą danych
  17. $tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
  18.  
  19. $login = $_POST["username"];
  20. $haslo = $_POST["password"];
  21.  
  22. $haslo = sha1($haslo); // szyfrowanie podanego hasła
  23.  
  24. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  25. username='$login' and password='$haslo' and status=0");
  26.  
  27. // jeżeli użytkownik zarejestrował się, a nie aktywował swojego konta, to wyświetla się komunikat
  28. if (mysql_num_rows($wynik) == 1) {
  29. $informacja = mysql_fetch_array($wynik);
  30. echo '<span class="blad">Nie aktywowałeś jeszcze swojego konta. Aby to zrobić, wejdź w swoją skrzynkę odbiorczą, a następnie znajdź wiadmość z linkiem aktywacyjnym i aktywuj swoje konto</span>';
  31. }
  32.  
  33. // jeżeli wszystko jest dobrze, użytkownik się loguje
  34.  
  35. $wynik=mysql_query("SELECT * FROM $tabela WHERE username='$login' and password='$haslo' and status=1");
  36.  
  37. if (mysql_num_rows($wynik) == 1) {
  38. $informacja = mysql_fetch_array($wynik);
  39. $_SESSION["username"] = $informacja["username"];
  40. header('Location: index.php ');
  41. } else {
  42. echo '<span class="blad">Zostały wprowadzone nieprawidłowe dane!</span>';
  43. }
  44. mysql_close($polaczenie);
  45. }
  46.  
  47. // tworzenie formularza HTML
  48. echo <<< KONIEC
  49.  
  50.   <form class="form" action="logowanie.php" method="post">
  51.   <input type="hidden" name="wyslane" value="TRUE" />
  52.  
  53.   <p>
  54. <div class="label"><label for="username">Login</label></div>
  55. <input type="text" name="username" id="username" />
  56. </p>
  57.  
  58. <p>
  59. <div class="label"><label for="password">Hasło</label></div>
  60. <input type="password" name="password" id="password" />
  61. </p>
  62.  
  63.   <p class="submit2">
  64.   <input type="submit" value="Zaloguj mnie" />
  65.   </p>
  66.  
  67. <p class="przypomnij">
  68. <a href="przypomnienie.php">Nie pamiętasz hasła?</a>
  69. </p>
  70.  
  71.   </form>
  72. KONIEC;
  73.  
  74. } else {
  75. header('Location: index.php'); // zalogowany użytkownik zostaje przekierowany na stronę główną
  76. }
  77.  
  78. if ($_GET["wylogowanie"] == "tak") {
  79. // niszczenie sesji użytkownika
  80. header('Location: index.php'); // przekierwanie na stronę główną
  81. }
  82.  
  83. ?>
  84.  
  85. </div>
  86. <?php include('footer.php'); ?>


login.php - ten z forum
  1. <?php
  2. //This page let log in
  3. include('config.php');
  4. if(isset($_SESSION['username']))
  5. {
  6. unset($_SESSION['username'], $_SESSION['userid']);
  7. setcookie('username', '', time()-100);
  8. setcookie('password', '', time()-100);
  9. ?>
  10. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  11. <html xmlns="http://www.w3.org/1999/xhtml">
  12. <head>
  13. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  14. <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
  15. <title>Login</title>
  16. </head>
  17. <body>
  18. <div class="header">
  19. <a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Forum" /></a>
  20. </div>
  21. <div class="message">You have successfully been logged out.<br />
  22. <a href="<?php echo $url_home; ?>">Home</a></div>
  23. <?php
  24. }
  25. else
  26. {
  27. $ousername = '';
  28. if(isset($_POST['username'], $_POST['password']))
  29. {
  30. {
  31. $ousername = stripslashes($_POST['username']);
  32. $username = mysql_real_escape_string(stripslashes($_POST['username']));
  33. $password = stripslashes($_POST['password']);
  34. }
  35. else
  36. {
  37. $username = mysql_real_escape_string($_POST['username']);
  38. $password = $_POST['password'];
  39. }
  40. $req = mysql_query('select password,id from users where username="'.$username.'"');
  41. $dn = mysql_fetch_array($req);
  42. if($dn['password']==sha1($password) and mysql_num_rows($req)>0)
  43. {
  44. $form = false;
  45. $_SESSION['username'] = $_POST['username'];
  46. $_SESSION['userid'] = $dn['id'];
  47. if(isset($_POST['memorize']) and $_POST['memorize']=='yes')
  48. {
  49. $one_year = time()+(60*60*24*365);
  50. setcookie('username', $_POST['username'], $one_year);
  51. setcookie('password', sha1($password), $one_year);
  52. }
  53. ?>
  54. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  55. <html xmlns="http://www.w3.org/1999/xhtml">
  56. <head>
  57. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  58. <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
  59. <title>Login</title>
  60. </head>
  61. <body>
  62. <div class="header">
  63. <a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Forum" /></a>
  64. </div>
  65. <div class="message">You have successfully been logged.<br />
  66. <a href="<?php echo $url_home; ?>">Accueil</a></div>
  67. <?php
  68. }
  69. else
  70. {
  71. $form = true;
  72. $message = 'The username or password you entered are not good.';
  73. }
  74. }
  75. else
  76. {
  77. $form = true;
  78. }
  79. if($form)
  80. {
  81. ?>
  82. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  83. <html xmlns="http://www.w3.org/1999/xhtml">
  84. <head>
  85. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  86. <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
  87. <title>Login</title>
  88. </head>
  89. <body>
  90. <div class="header">
  91. <a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Forum" /></a>
  92. </div>
  93. <?php
  94. if(isset($message))
  95. {
  96. echo '<div class="message">'.$message.'</div>';
  97. }
  98. ?>
  99. <div class="content">
  100. <?php
  101. $nb_new_pm = mysql_fetch_array(mysql_query('select count(*) as nb_new_pm from pm where ((user1="'.$_SESSION['userid'].'" and user1read="no") or (user2="'.$_SESSION['userid'].'" and user2read="no")) and id2="1"'));
  102. $nb_new_pm = $nb_new_pm['nb_new_pm'];
  103. ?>
  104. <div class="box">
  105. <div class="box_left">
  106. <a href="<?php echo $url_home; ?>">Forum Index</a> &gt; Login
  107. </div>
  108. <div class="box_right">
  109. <a href="list_pm.php">Your messages(<?php echo $nb_new_pm; ?>)</a> - <a href="profile.php?id=<?php echo $_SESSION['userid']; ?>"><?php echo htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8'); ?></a> (<a href="login.php">Logout</a>)
  110. </div>
  111. <div class="clean"></div>
  112. </div>
  113. <form action="login.php" method="post">
  114. Please, type your IDs to log:<br />
  115. <div class="login">
  116. <label for="username">Username</label><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /><br />
  117. <label for="password">Password</label><input type="password" name="password" id="password" /><br />
  118. <label for="memorize">Remember</label><input type="checkbox" name="memorize" id="memorize" value="yes" /><br />
  119. <input type="submit" value="Login" />
  120. </div>
  121. </form>
  122. </div>
  123. <?php
  124. }
  125. }
  126. ?>
  127. <div class="foot"><a href="http://www.webestools.com/scripts_tutorials-code-source-26-simple-php-forum-script-php-forum-easy-simple-script-code-download-free-php-forum-mysql.html">Simple PHP Forum Script</a> - <a href="http://www.webestools.com/">Webestools</a></div>
  128. </body>
  129. </html>



Oglądając te dwa kody myślę, że jest to problem zapisywania do cookies mojego loginu. Mógłby ktoś połączyć te dwa kody tak, aby strona się nie zniszczyła? LUB dodać do pierwszego kodu jakoś dodawanie do ciasteczek bo jak ja to robię to nic to nie pomaga:
  1. if(isset($_SESSION['username']))
  2. {
  3. unset($_SESSION['username'], $_SESSION['userid']);
  4. setcookie('username', '', time()-100);
  5. setcookie('password', '', time()-100);


Dziękuję z góry za pomoc wink.gif
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.