Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php + msql] jak zrobić prawidłowe zapytanie?
Forum PHP.pl > Forum > Przedszkole
bigart
witam

stworzyłem sobie w mysql tabele

tabela newsów
  1. CREATE TABLE news
  2. (idnews int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. autor char(40), DATA datetime, tytul char (70), tekst text);


tabela uzytkowników (uwierzytlenianie)
  1. CREATE TABLE uwierz
  2. (id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. iduzytkownika char(40), haslo char(40) ) ;<===sha1 wiem ze szyfrowało ale nie pamietam jak TO wpisac ...


formularz logowania

  1. <?php
  2.  
  3. if (isset($_POST['iduzytkownika']) && isset($_POST['haslo']))
  4. {
  5. //podjęcie próby zalogowania 
  6.  
  7. $iduzytkownika=$_POST['iduzytkownika'];
  8. $haslo=$_POST['haslo'];
  9.  
  10. $bd_lacz=mysql_connect('localhost','root','haslo');
  11. mysql_select_db('so',$bd_lacz);
  12. if (!$bd_lacz)
  13.  
  14. {
  15.  
  16.  echo 'Błąd połączenia';
  17.  
  18.  exit;
  19.  
  20. }
  21. $zapytanie = "select * from uwierz where iduzytkownika='$iduzytkownika' and haslo=sha1('$haslo')";
  22. $wynik=mysql_query($zapytanie,$bd_lacz);
  23. echo $zapytanie;
  24.  
  25. if (mysql_num_rows($wynik) > 0)
  26. {
  27. //jezeli uzytkownik jest w bazie nastąpi jego zalogowanie
  28.  
  29. $_SESSION['prawid_uzyt']=$iduzytkownika;
  30. }
  31. }
  32. ?>
  33. <html>
  34. <body>
  35. <h1>Strona głowna</h1>
  36. <?
  37. if (isset($_SESSION['prawid_uzyt']))
  38. {
  39. echo 'Uzytkownik zalogowany jako: '.$_SESSION['prawid_uzyt'].'<br />';
  40. echo '<a href= "wylog.php">Wylogowanie</a><br />';
  41. }
  42. else 
  43. {
  44. if (isset($iduzytkownika))
  45. {
  46. //jezeli proba logowanie byla nieudana 
  47. echo 'Zalogowanie niemożliwe.<br />';
  48. }
  49. else
  50. {
  51. //nie bylo proby logowania
  52. echo 'Użytkownik jest niezalogowany.<br />';
  53. }
  54. //tworzenie formularza logowania
  55. echo '<form action="uwierz_glowny.php" method="post">';
  56. echo '<table>';
  57. echo '<tr><td>Identyfikator użytkownika: </td>';
  58. echo '<td><input type="text" name="iduzytkownika"</td></tr>';
  59. echo '<tr><td>Hasło: </td>';
  60. echo '<td><input type="password" name="haslo"</td></tr>';
  61. echo '<tr><td colspan="2" align="center">';
  62. echo '<input type="submit" value="Logowanie"></td></tr>';
  63. echo '</table></form>';
  64. }
  65. ?>
  66. <br>
  67. <a href="news.php"> Część członkowska</a>
  68. </body>
  69. </html>


po zalogowaniu (gdzie prawidłowo umieszczec $zmienna=$_POST('zmienna') przed session_start(); czy po questionmark.gif)

  1. <?php
  2.  
  3.  
  4. $tytul=$_POST['tytul'];
  5. $tekst=$_POST['tekst'];
  6.  
  7. $tytul=addslashes($tytul);
  8. $tekst=addslashes($tekst);
  9.  
  10. $db = mysql_pconnect ('localhost','root','bigart0');
  11. mysql_select_db('so', $db);
  12.  
  13. if (!$db)
  14. {
  15. echo 'błąd połączenia z bazą';
  16. }
  17.  
  18. $zapytanie = "insert into news (tytul, tekst, data) values ('".$tytul."','".$tekst."','".date('Y-m-d H:i:s')."')";
  19.  
  20. $wynik=mysql_query($zapytanie);
  21.  
  22.  
  23.  
  24. echo '<h1>Dodaj newsa</h1>';
  25.  
  26.  
  27.  
  28. // sprawdzenie zmiennej sesji
  29.  
  30.  
  31.  
  32. if(isset($_SESSION['prawid_uzyt']))
  33.  
  34. {
  35.  
  36. echo '<p>Użytkownik zalogowany jako '.$_SESSION['prawid_uzyt'].'</p>';
  37.  
  38. echo '<table width=98% align=center cellpadding=1 cellspacing=1>';
  39. echo '<form action="dodaj_news.php" method="post">';
  40. echo '<tr>';
  41. echo '<td align="center" colspan="2" align="center">Dodaj News</td>';
  42. echo '</tr>';
  43.  
  44. echo '<tr>';
  45. echo '<td align="center">Tytuł<input type="text" name="tytul" size="70" maxlenght="70"></td>';
  46. echo '</tr>';
  47.  
  48. echo '<tr>';
  49. echo '<td align="center">Treść<textarea name="tekst" cols="70" rows="30"></textarea></td>';
  50. echo '</tr>';
  51.  
  52. echo '<tr>';
  53. echo '<td align="center"><input type="submit" value="Dodaj" ></td>';
  54. echo '</tr>';
  55.  
  56. echo '</form>';
  57. echo '</table>';
  58.  
  59.  
  60. }
  61.  
  62. else
  63.  
  64. {
  65.  
  66. echo '<p>Użytkownik niezalogowany.</p>';
  67.  
  68. echo '<p>Tylko zalogowani użytkownicy mogą ogladać tę stronę.</p>';
  69.  
  70. }
  71.  
  72.  
  73. ?>


jak w kodzie powyzej zrobic zabezpieczenia typu > kod ponizej questionmark.gif?


  1. <?php
  2. if (!$tytul || !$tekst)
  3. {
  4. echo 'nie wypełniłeś wszystkich pól';
  5. echo '<a href="news.php">Powrót</a>';
  6. }
  7. ?>


i sprawa która mnie najbardziej zastanawia ... jak w zapytaniu dodac uzytkownika ktory zalogowal sie do sesji ? chodzi mi o to ze jak ktos sie zaloguje i napisze newsa to oprocz tekstu, tytulu i daty chcialbym miec jeszcze kto napisal tego newsa czyli uzytkownika ktory sie zalogowal ...
Lonas
Raz dodaj sobie pole autor do tabeli z newsami
Dwa :
  1. <?php
  2. $user= $_SESSION['prawid_uzyt'];
  3.  
  4. $zapytanie = "insert into news (tytul, tekst, data,autor) values ('".$tytul."','".$tekst."','".date('Y-m-d H:i:s').", '$user' ')";$wynik=mysql_query($zapytanie);
  5. ?>
bigart
dodalem autor char (40)

  1. <?php
  2.  
  3.  
  4.  
  5.  
  6. $autor= $_SESSION['prawid_uzyt']; 
  7.  
  8. $tytul=$_POST['tytul'];
  9. $tekst=$_POST['tekst'];
  10.  
  11.  
  12.  
  13. $tytul=addslashes($tytul);
  14. $tekst=addslashes($tekst);
  15.  
  16. $db = mysql_pconnect ('localhost','root','bigart0');
  17. mysql_select_db('so', $db);
  18.  
  19. if (!$db)
  20. {
  21. echo 'błąd połączenia z bazą';
  22. }
  23.  
  24. $zapytanie = "insert into news (tytul, tekst, data, autor) values ('".$tytul."','".$tekst."','".date('Y-m-d H:i:s')."','".$autor."')";
  25.  
  26. $wynik=mysql_query($zapytanie);
  27. ..... reszta tak samo jak wczesniej
  28. ?>


i niestety zapytanie jest zle.... sad.gif

przerpaszam nie odswierzyłem ... wszytsko jest ok .. dzieki!!
smile.gif

teraz te zabezpieczenia jak porobic w kodzie powyzej... chcialbym zeby wszystko bylo w jednym pliku zeby nie bylo potrzeby tworzenia 2 (tzn w jednym pliku zeby bylo dodanie newsa i wskazywanie bledów ze np. pola nie zostaly wypelnione)
ujex
  1. <?php
  2. if(){
  3. ....
  4. }elseif(){
  5. ...
  6. }else{
  7.  
  8. }
  9. ?>
radziowi
Mozesz dodać JavaScripta. Oto link który CI w tym pomoże:

link
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.