Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zeruje sie zmienna po wcisnieciu przycisku
fenix.robi
post 25.06.2008, 11:33:44
Post #1





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

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


Mam problem, pisze stronke  z kawałami, i przy .../dodaj_kawał.php?uz_id=$uz_id

wysyłam id uzytkownika ktory jest potrzebny do przypisania autora kawału


  1. $create_table = "create table kawaly (
  2.   id INT PRIMARY KEY AUTO_INCREMENT,
  3.   tresc TEXT NOT NULL,  
  4.   ocena INT,  
  5.   uzyt_id INT REFERENCES uzytkownicy(id) )";


formularz :

  1. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  2. <label>Wpisz tutaj swój kawał:<br />
  3. <textarea name="tresc" rows="10" cols="40" wrap="physical"></textarea></label><br />
  4. <input type="submit" name="submit" value="Wyslij" />
  5. <input type="checkbox" name="zaznacz" value="wartość" /> Akcjeptuje <a href='./regulamin.php'>regulamin.</a>
  6. </form>


fragment odpowadajacy zdarzeniu dodana kawału

  1. <?php
  2. $uz_id=$_GET['uz_id'];
  3. echo $uz_id ;  //wyswietli $uz_id ktory jest pobierany z adresu
  4. if (isset($_POST['submit'])) 
  5.  {
  6.       echo $uz_id ;      //tutaj juz nie wyswietla tak jakby powyzszy warunek kasował tą zmienna :/
  7.      if (!empty($_POST['tresc']))
  8.      {
  9.          if (isset($_POST['zaznacz']))
  10.           {     
  11.                  $tekst = $_POST['tresc'];
  12.                  $dodaj = "INSERT INTO kawaly SET tresc='$tekst', ocena=0, uzyt_id='$uz_id'";  // jak nie wyswietla po warunku tak tutaj nie wprowadza poprawnie id uzytkownika t
  13. lko przypisuje uzyt_id = 0 
  14.     if (mysql_query($dodaj))
  15.   {
  16.   echo "<p>Twoj kawał został dodany</p><br>";
  17.   echo "<p>Nastąpi przekierowanie do strony głownej</p>";
  18.   echo "<META HTTP-EQUIV='Refresh' CONTENT='3; URL=./index.php?uz_id=$uz_id'>";
  19.   } else
  20.   {
  21.   echo "<p>Bład podczas dodawania kawalu </p>" . mysql_error();
  22.   }
  23.    } else
  24.    echo "Niezakceptowałes warunkow regulaminu";
  25.   } else
  26.   echo "W formularzu nie ma tekstu";
  27.   }?>



Chcem aby  ($dodaj = "INSERT INTO kawaly SET tresc='$tekst', ocena=0, uzyt_id='$uz_id'";) prawidłowo wstawiało od tabeli oraz przekierowało wraz z przyjetym $uz_id z wczesniejszej strony na nastepna (echo "<META HTTP-EQUIV='Refresh' CONTENT='3; URL=./index.php?uz_id=$uz_id'>";)

Nie wiem czy kolejność formy przed kodem PHP ma jakies znaczenie, ten jezyk poznaje od 2,5 dni wiec prosze o wyrozumiałość, aha nie mam czasu na wgłebianie sie w sesje, wiem ze tak by było najoptymalniej i bezpieczniej ale powterze nie mam czasu :/ wiec jesli wiecie jak zrobic bez sesji to pomozcie biggrin.gif

Ten post edytował fenix.robi 25.06.2008, 11:35:19
Go to the top of the page
+Quote Post
f1xer
post 25.06.2008, 12:47:55
Post #2





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


To będzie totalny offtop za co admina przepraszam, drogi autorze ja też nie znam zbyt dobrze PHP ale mam na tyle rozumu żeby nigdy nie mówić że muszę coś napisać szybko otóż twój "skrypt" ma więcej słabych punktów niż funkcjonalności mówiąc że nie masz czasu żeby wgłębiać się w sesje pokazujesz wszystkim jakim jesteś porządnym i systematycznym człowiekiem, skoro nie chcesz poznać mechanizmów PHP to po co w nim programujesz? lepiej zleć to komuś i ciesz się w miarę bezpiecznym i funkcjonalnym skryptem. A nie pomogę z jednego prostego względu jak dla mnie to ten skrypt trzeba przepisać od nowa i przynajmniej sprawdzać dane jakie przychodzą a ty nie dość że wpisujesz tak jak leci do bazy wszystko to jeszcze używasz nie sprawdzonych parametrów w zapytaniu. 2,5 dnia i już piszesz stronke? dla mnie to ignorancja lepiej potestuj sobie podstawy PHP a później weź się za mysql. Ludzie to że stron o programowaniu jest masa to nie znaczy że można olać systematyczność w nauce języka z hasłem na ustach a tego nie teraz jak będzie potrzebne spytam na forum.


--------------------
Pomogłem? wyraź to i kliknij "Pomógł"
Go to the top of the page
+Quote Post
fenix.robi
post 25.06.2008, 13:14:49
Post #3





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

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


HEHE co racja to racja, trzeba przyjac na siebie konstuktwna krytyke, za pozno sie za to zabrałem i bach zleciało sie, ale zamiezam sie przysiasc na wakacje, dobra niewazene jednak w tym czasie zdazyłem jednak sie wgłebic w temat sesji i juz poprawiłem swoje kody, i jestem w trakcjie poprawiania błedów, jednak w powyzszym kodzie co byś zmienil zeby wyemilinowac te słabe punkty, zapewne przy $_POST['login'] itp ale na co, a jesli chodzi o mysql to nie rozumiem, bo powiazania są dobre, ale jak znasz lepsze bardziej uzyteczne to czekam biggrin.gif zawsze moznasie czegos nauczyc
P.S. teraz $uz_id nie pobieram z linku, tylko $uz_id=$_SESSION['id'];

Ten post edytował fenix.robi 25.06.2008, 13:18:58
Go to the top of the page
+Quote Post
k3nsei
post 25.06.2008, 13:22:22
Post #4





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 25.06.2008

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


W google wpisz Sql Injection i poszukaj jak się przed tym bronić.
Go to the top of the page
+Quote Post
fenix.robi
post 25.06.2008, 13:25:22
Post #5





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

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


Cytat(k3nsei @ 25.06.2008, 14:22:22 ) *
W google wpisz Sql Injection i poszukaj jak się przed tym bronić.

 oki poszukam, narazie walcze z samym soba, ale powyszy bład juz nie wystepuje, teraz poprawiam po sobie yo thx, jak ktos ma pomysły jak ulepszyc to  niech sie nie krepuje biggrin.gif
 
Go to the top of the page
+Quote Post
Babcia@Stefa
post 25.06.2008, 19:43:32
Post #6





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

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


  1. <?php
  2. $uz_id=mysql_real_escape_string($_GET['uz_id']);
  3. echo $uz_id ; //wyswietli $uz_id ktory jest pobierany z adresu
  4. if (isset($_POST['submit'])) 
  5.  {
  6. echo $uz_id ; //tutaj juz nie wyswietla tak jakby powyzszy warunek kasował tą zmienna :/
  7.  if (!empty($_POST['tresc']))
  8.  {
  9.  if (isset($_POST['zaznacz']))
  10. {  
  11.  $tekst = mysql_real_escape_string($_POST['tresc']);
  12.  $dodaj = "INSERT INTO kawaly SET tresc='$tekst', ocena=0, uzyt_id='$uz_id'"; // jak nie wyswietla po warunku tak tutaj nie wprowadza poprawnie id uzytkownika t
  13. lko przypisuje uzyt_id = 0 
  14. if (mysql_query($dodaj))
  15.  {
  16.  echo "<p>Twoj kawał został dodany</p><br>";
  17.  echo "<p>Nastąpi przekierowanie do strony głownej</p>";
  18.  echo "<META HTTP-EQUIV='Refresh' CONTENT='3; URL=./index.php?uz_id=$uz_id'>";
  19.  } else
  20.  {
  21.  echo "<p>Bład podczas dodawania kawalu </p>" . mysql_error();
  22.  }
  23. } else
  24. echo "Niezakceptowałes warunkow regulaminu";
  25.  } else
  26.  echo "W formularzu nie ma tekstu";
  27.  }?>


Poprawię Ci ten SQL Injection.
Ale radzę Ci, poczytaj trochę o atakach SQL Injection.

Pozdrawiam, WebNuLL


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
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: 13.05.2024 - 18:40