![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 27.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Robię taki drobny skrypt ogłoszeń, dodałem kilka rzeczy i pojawił mi się problem z usuwaniem rekordów. Mianowicie każdy rekord w bazie ma inne id (u mnie: idnum) i dodatkowo w każdym rekordzie jest ustawione hasło. Gdy chcę usunąć konkretny rekord z np. id 50 i podaję poprawne hasło to usuwa zupełnie inny rekord niż ten wybrany z id 50 i z innym hasłem. Nie wiem gdzie tkwi problem. Proszę o podpowiedzi. Niżej kody 3 plików.
1. strona z numerem id który ma być skasowany i pytaniem o hasło:
2. Strona pyta czy napewno usunąć rekord
3. Wykonanie kasowania rekordu
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 39 Dołączył: 7.11.2010 Skąd: Raz tu, raz tam Ostrzeżenie: (30%) ![]() ![]() |
A po co tam like przy usuwaniu? Po drugie skad bierzesz $_POST['delete_id']; ? Z pierwszego formularza a w drugim to juz nie istnieje
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 27.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
A po co tam like przy usuwaniu? Po drugie skad bierzesz $_POST['delete_id']; ? Z pierwszego formularza a w drugim to juz nie istnieje <input type="text" name="delete_id" value="'.$id_get.'" size="10" class="formst"> WHERE idnum Like '%".$_POST['delete_id']."%' żeby wiedział co kasować. Czy to jest źle zrobione? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 92 Dołączył: 6.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
A to, że nie kasujesz rekordu z danym id, ale z id podobnym do tego. Na przykład id 1 i 111
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 763 Pomógł: 117 Dołączył: 15.03.2010 Skąd: void Ostrzeżenie: (0%) ![]() ![]() |
Pamiętaj, że znak % oznacza dowolny ciąg znaków. Jeśli zatem masz id 1 to jest to rozpoznawane tak samo jak:
1 112 513 831 2192 7311 86146 itd... Chyba wiesz co powinieneś w tym przypadku zrobić (IMG:style_emoticons/default/smile.gif) Lecz wciąż nie mam pewności co do tego błędu. Nie wydaje mi się by był on spowodowany złym zapisem w WHERE bo pewnie tak to właśnie ma wyglądać. LIMIT powinien ograniczyć kasowane rekordy ;/ a w Twoim wypadku tak się nie dzieje. Cóż... pokombinuj i daj nam więcej wskazówek bo szczerze mówiąc nie mam dziś nastroju do analizowania wszystkich fragmentów kodu w poszukiwaniu błędu logicznego. Ten post edytował modern-web 4.03.2011, 16:54:51 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 27.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Faktycznie co do % to wiem, że zastępuje dowolny ciąg znaków, ale to wygląda tak, że chcę usunąć id 50 a kasuje mi id 38 albo jakiś inny gdzie nie ma tych cyfer np 38. Już sprawdziłem, kiedy pominę ten plik z pytanie o potwierdzenie to usuwa rekordy z takim id jakie sobie wybiorę. Ale muszę zastosować jakieś pytanie o potwierdzenie.
Ten post edytował Lucky Luke 4.03.2011, 17:16:15 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 39 Dołączył: 7.11.2010 Skąd: Raz tu, raz tam Ostrzeżenie: (30%) ![]() ![]() |
Bo Ci tlumacze, ze w trzecim pliku juz $_POST['id_delete'] nie istnieje, przenosisz to z pierwszego formularza do drugiego tylko. (albo ja slepy jestem). Poczytaj o $_POST bo chyba nie wiesz jak to dziala
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 763 Pomógł: 117 Dołączył: 15.03.2010 Skąd: void Ostrzeżenie: (0%) ![]() ![]() |
Sprawdź to w prosty sposób by potwierdzić tezę ciekawskiii:
1. 3 plik 2. 9 wers 3. zastąp to takim kodem: 4. przekonamy się czy delete_id przekazywane jest do 3 pliku... (IMG:style_emoticons/default/wink.gif) P.S. Chyba miałeś błąd w tej linijce bo napisałeś !isset czyli na to wychodzi, że po wciśnięciu klawisza ta instrukcja nie powinna być wykonywana... no ale i tak klawisz w 2 pliku powinien mieć name="submit"... Masz pełno podstawowych błędów no ale jak już mówiłem, nie chcę tego wszystkiego przeglądać pod tym kątem. Ten post edytował modern-web 4.03.2011, 17:56:20 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 27.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Sprawdź to w prosty sposób by potwierdzić tezę ciekawskiii: 1. 3 plik 2. 9 wers 3. zastąp to takim kodem: 4. przekonamy się czy delete_id przekazywane jest do 3 pliku... (IMG:style_emoticons/default/wink.gif) no niestety nic to nie daje (IMG:style_emoticons/default/sad.gif) . Jest jakaś szansa, żeby to delete_id przekazać do 3 pliku? |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 763 Pomógł: 117 Dołączył: 15.03.2010 Skąd: void Ostrzeżenie: (0%) ![]() ![]() |
No raczej... Najprościej dodaj do formularza znajdującego się na stronie 2 pole <input> z atrybutem hidden i name="delete_id" a następnie wczytaj do niego wartość delete_id otrzymaną z strony 1 (pole będzie niewidoczne ale wartość delete_id zostanie przekazana z całym formularzem do strony 3). Nic prostszego (IMG:style_emoticons/default/smile.gif) Jeśli nie wiesz jak zrobić takie pole to www.google.pl (IMG:style_emoticons/default/tongue.gif)
Ten post edytował modern-web 4.03.2011, 18:31:16 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 39 Dołączył: 7.11.2010 Skąd: Raz tu, raz tam Ostrzeżenie: (30%) ![]() ![]() |
Mozesz w ukrytym hidden, w sesji albo w get, w sumie jakiegos id w get tam masz wiec to chyba to id? Troche sie w tym gubie
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 27.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie właśnie z tym nowym polem <input> zacząłem kombinować ale zamiast hidden miałem button i z tym nie działało a z hidden wygląda że działa dobrze.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 763 Pomógł: 117 Dołączył: 15.03.2010 Skąd: void Ostrzeżenie: (0%) ![]() ![]() |
Musi działać... Więc powiedz na czym teraz stoimy (IMG:style_emoticons/default/smile.gif)
Nadal problem z identyfikatorami? Kasują się wszystkie, tak? |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 39 Dołączył: 7.11.2010 Skąd: Raz tu, raz tam Ostrzeżenie: (30%) ![]() ![]() |
Nastepnym razem wystarczy sobie wyswietlic wszystkie zmienne przed zapytaniem i zobaczyc czy w ogole sa, echo nie jest trudne a w ten sposob nauczysz sie wyszukiwac takie bledy samemu;)
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 27.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Musi działać... Więc powiedz na czym teraz stoimy (IMG:style_emoticons/default/smile.gif) Nadal problem z identyfikatorami? Kasują się wszystkie, tak? Teraz wygląda, że działa tak jak zaplanowałem (IMG:style_emoticons/default/smile.gif) , czyli kasuje rekordy re które sobie wybiorę ze sprawdzaniem hasła, oczywiście dzięki Waszej pomocy. Podpowiedzcie mi jeszcze tak poza tym tematem czy są jakieśprogramy które sprawdzą mi kod który piszę? Jestem raczej samoukiem staram się robić wiele sam ale czasem korzystam z poradników i różnych książek ale zapewne jet w tym sporo jakichś błędów i przydało by się jakieś narzędzie które może to sprawdzić. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 763 Pomógł: 117 Dołączył: 15.03.2010 Skąd: void Ostrzeżenie: (0%) ![]() ![]() |
@ciekawskiii To życzę powodzenia w wyświetlaniu zmiennych w bardziej skomplikowanych skryptach o długościach 500 linijek... echo na wiele się nie zda; lepiej chwilę posiedzieć i logicznie pomyśleć; przeanalizować cały system i szukać błędu `logicznego`.
@Lucky Luke Nie ma programu, który sprawdzi Tobie skrypt pod kątem `logicznym`. Są różne techniki programowania i zawsze najlepiej robić skrypt jak najkrótsze, najszybsze i najbardziej czytelne... Programy typu Adobe Dreamweaver/CoreEditor lub inne tego typu z kolorowaniem składni pokażą Ci błędy w strukturze. To Ty sam musisz nauczyć się dobrych praktyk. Z czasem sam wszystko zrozumiesz (IMG:style_emoticons/default/wink.gif) Pozdrawiam! Ten post edytował modern-web 4.03.2011, 18:59:19 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 39 Dołączył: 7.11.2010 Skąd: Raz tu, raz tam Ostrzeżenie: (30%) ![]() ![]() |
Modern, zawsze tak robie, tak sie sam uczylem i jakos sobie radze z takimi rzeczami a tym bardziej polecam to poczatkujacym bo mozna szybko odnalezc w czym jest problem i wlasnie zmusza do przeanalizowania i do logicznego myslenia. Moze nie zawsze zda to egzamin ale w takich przypadkach tak bo gdyby sobie to wyswietlil w 3 pliku to juz by wiedzial ze id nieistnieje. P.s. Lucky Luke, poczytaj tez o zabezpieczeniach...
Ten post edytował ciekawskiii 4.03.2011, 19:15:36 |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 27.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
ok dzięki (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 763 Pomógł: 117 Dołączył: 15.03.2010 Skąd: void Ostrzeżenie: (0%) ![]() ![]() |
I na wstępnie dodam, że nie sugeruj się stripslashes i addslashes przy zabezpieczeniach gdyż nie do tego te 2 funkcje służą. Mają swój odpowiednik: mysql_real_escape_string .
Najważniejsze jest i tak filtrowanie danych. Sprawdzaj je pod wieloma kątami... Poczytaj o SQL Injection/Insertion i innych atakach za pośrednictwem MySQL. Traktuj każdego odwiedzającego jak nieprzyjaciela (IMG:style_emoticons/default/smile.gif) nigdy nie wiesz jakie ma zamiary wobec Twojego systemu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 02:15 |