![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 1.08.2011 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam. Piszę stronę internetową i mam taki problem, że strona dodaje mi do bazy danych dwa razy te same rekordy, dokładniej w tym przypadku do tabel `zapytanie_znajomosci` i `messages` wstawia podwójne rekordy, ale mam ten problem też w innych sytuacjach... Nie mam ifa w while, już nie wiem dlaczego może tak być...
Daję kod, mam nadzieję, że ktoś potrafi mi pomóc...
Ten post edytował Daiquiri 24.09.2011, 18:36:20
Powód edycji: [Daiquiri]: Tag
|
|
|
![]()
Post
#2
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Proszę poprawić BBCode - tak na start.
Pytanie zasadnicze brzmi: Czy po dodaniu do bazy "wracasz" na ten sam adres? Jeżeli tak to zerknij na var_dump($dodaj_znajomego) przed warunkiem. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Czyli mogę dodać znajomego przez link? Zabezpiecz to jakoś isset
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 1.08.2011 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Proszę poprawić BBCode - tak na start. Pytanie zasadnicze brzmi: Czy po dodaniu do bazy "wracasz" na ten sam adres? Jeżeli tak to zerknij na var_dump($dodaj_znajomego) przed warunkiem. Nie rozumiem co mam poprawić w związku z tym BBCode (bo chyba nie chodzi tu o mój kod tylko post na forum) - jeśli chodzi o znaczniki [PHP] i [MySQL] w nazwie tematu to zaznaczyłem je... W sprawie tego problemu: jestem na stronie np "?id=profil&idu=8", po kliknięciu linka przenosi mnie na stronę "?id=profil&idu=8&dodaj_znajomego=true", a później przez skrypt js w ifie przenosi mnie spowrotem na "?id=profil&idu=8"... Na marginesie dodam, że jestem początkujący, co raczej widać... Ten post edytował JinLisek 24.09.2011, 18:40:35 |
|
|
![]()
Post
#5
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Poprawiłam tag.
Jeżeli "wracasz" na stronę, w której masz Insert -> to prawdopodobnie spełnia się Twój warunek (mimo, iż próbujesz zmiennej nadać wartość FALSE). Dodaj var_dump($dodaj_znajomego) przed Ifem, to zobaczysz czy przy powrocie zmienna $dodaj_znajomego jest jednak TRUE i dane dodają się raz jeszcze (ponieważ warunek jest spełniony). |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 1.08.2011 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Poprawiłam tag. Jeżeli "wracasz" na stronę, w której masz Insert -> to prawdopodobnie spełnia się Twój warunek (mimo, iż próbujesz zmiennej nadać wartość FALSE). Dodaj var_dump($dodaj_znajomego) przed Ifem, to zobaczysz czy przy powrocie zmienna $dodaj_znajomego jest jednak TRUE i dane dodają się raz jeszcze (ponieważ warunek jest spełniony). Nie jestem pewny czy dobrze to sprawdziłem, ale chyba miałaś rację z tym, że zmienna nadal ma wartość true... Co mogę zrobić w tym wypadku, jeśli nie chce się jej zmienić wartość? Chciałbym się dowiedzieć też co dokładnie było źle w moim tagu, żeby na przyszłość nie popełnić tego błędu... Do !*!: chciałem to zrobić na formularzu, ale mam do kliknięcia obrazek i tekst, więc pomyślałem, że łatwiej będzie na linku... Ten post edytował JinLisek 24.09.2011, 18:50:26 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Źle się do tego zabierasz. Dane do bazy wysyłasz jakimś formularzem? To sprawdź czy został wysłany przez isset($_POST['submit']);
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 1.08.2011 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Źle się do tego zabierasz. Dane do bazy wysyłasz jakimś formularzem? To sprawdź czy został wysłany przez isset($_POST['submit']); Nie... Przechwytuję z linku $_GET['dodaj_znajomego'] i wtedy daję warunek
Ten post edytował JinLisek 24.09.2011, 18:53:41 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Mało bezpieczne (IMG:style_emoticons/default/wink.gif) sprawdzaj to na tej samej zasadzie.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 1.08.2011 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Mało bezpieczne ;) sprawdzaj to na tej samej zasadzie. Dzięki, zupełnie się nie znam na zabezpieczaniu strony, więc każde wytknięcie luki będę przyjmował z entuzjazmem (IMG:style_emoticons/default/smile.gif) Teraz dałem if( isset($_GET['dodaj_znajomego'] ), tylko, że to nie rozwiązuje mojego problemu... Ten post edytował JinLisek 24.09.2011, 18:57:37 |
|
|
![]()
Post
#11
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
No to przestań przekierowywać na adres z ustawioną zmienną $_GET['dodaj_znajomego'], wtedy warunek nie będzie spełniony.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 1.08.2011 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
No to przestań przekierowywać na adres z ustawioną zmienną $_GET['dodaj_znajomego'], wtedy warunek nie będzie spełniony. Właśnie za pierwszym razem muszę przekierować... Spróbuję to wytłumaczyć dokładniej... 1. Użytkownik wchodzi na profil kogoś o adresie "?id=profil&idu=12"; 2. Postanawia dodać osobę, której profil odwiedził do znajomych, klika "dodaj do znajomych" co przekierowuje go na stronę "?id=profil&idu12&dodaj_znajomego=true"; 3.Strona widzi, że jest $_GET['dodaj_znajomego'], więc dodaje do bazy danych rekord, a później przy pomocy js przekierowuje na stronę z 1 punktu: "?id=profil&idu=12" - tu już nie ma dodaj_znajomego=true, więc nie powinna się drugi raz instrukcja wykonywać... |
|
|
![]()
Post
#13
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Ale na górze masz $dodaj_znajomego = zabezpiecz_string($_GET['dodaj_znajomego'])? Musisz po prostu sprawdzić skrypt "od góry" pod kątem przypisywania wartości do zmiennej $dodaj_znajomego, bo jak sam stwierdziłeś przyjmuje wartość TRUE (IMG:style_emoticons/default/smile.gif) .
Może po prostu przed $dodaj_znajomego = zabezpiecz_string($_GET['dodaj_znajomego']) wstaw warunek (if_isset($_GET['dodaj_znajomego'])) a w nim dopiero wywołaj funkcję zabezpiecz_string(). Opcjonalnie w tej funkcji zwracaj FALSE jeżeli $_GET['dodaj_znajomego'] nie została ustawiona. |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Więc przed zapisem sprawdź czy użytkownik ma już danego Pana/Panią w znajomych... nie ma dodaj / ma brak akcji
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 1.08.2011 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Próbowałem sposobem Daiquiri, ale mi nie wychodziło, więc ostatecznie zrobiłem to sposobem CuteOne... Dziękuję wszystkim za pomoc (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 16:14 |