Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Ponowne przesłanie formularza
Puchatek320
post 4.11.2019, 22:45:34
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

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


Cześć,
Chciałbym się dowiedzieć jak można ominąć ponowne przesłanie formularza. Mam stronę internetową z wyszukiwarką jeśli jej użyje wszystko jest fajne, do czasu gdy wybieram film i chcę cofnąć stronę do wyników wyszukiwania to pojawia się komunikat o treści "Potwierdź ponowne przesłanie formularza". Co można z tym zrobić? nie mam żadnego pomysłu jak można ten problem obejść w internecie też nie znalazłem jakiejś sensownej odpowiedzi.

plik wyszukiwarki
  1. <?php
  2. include('login.php');
  3. include('./db/connection.php');
  4.  
  5. $szukaj = ("+");
  6. $szukaj .= $_POST["search"];
  7.  
  8. $metoda = $_POST["metoda"];
  9. $znakrozdzielenia=' +';
  10.  
  11. $wyn = str_replace(" ", "$znakrozdzielenia", $szukaj);
  12.  
  13.  
  14. $klucze=explode($znakrozdzielenia, $szukaj);
  15.  
  16. foreach($klucze AS $wynik){}
  17.  
  18.  
  19. $zapytanie = $pdo->prepare("SELECT * FROM filmy WHERE MATCH(".$metoda.") AGAINST ('".$wyn."')ORDER BY id DESC"); //zmienna $pdo pochodzi z db/connection.php
  20. $zapytanie->execute(); // wykonaj zayptanie do bazy danych
  21. while($rekord = $zapytanie->fetch()) {
  22.  
  23.  
  24.  
  25. echo"<div class='col-md-4'><div class='card; bg-dark m-2'><div class='embed-responsive embed-responsive-16by9'>
  26. <video controls><source src= $rekord[short] type='video/mp4' frameborder='0' ></video></div><div class='card-content text-center'><span class='card-title'><a href=index.php?v=watch&id=$rekord[id]>$rekord[nazwa]</a></span></div><!-- card content --> </div></div>";
  27.  
  28. }
  29.  
  30. ?>
  31.  
Go to the top of the page
+Quote Post
dublinka
post 5.11.2019, 08:15:32
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Mozesz sama szukana przypisac sesji i dodac jako fraza te sesje. Sesja istnieje dopuki jej nie usuniesz wiec bedzie "dzialac" tak jakby byla wklepana przez kogos. Za kadym razem bedzie nadpisywana nowa fraza do wyszukania.


--------------------
Go to the top of the page
+Quote Post
kapslokk
post 5.11.2019, 08:27:00
Post #3





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


IMO nie trzeba nic kombinować z sesją, wystarczy dane wyszukiwania wysyłać GET'em a nie POST'em. Poza tym kod, który podałeś jest podatny na SQL Injection - powinieneś to poprawić.
Go to the top of the page
+Quote Post
Puchatek320
post 5.11.2019, 23:08:56
Post #4





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

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


Sesja to dobry pomysł ale pytanie jak można to wykonać?

  1. if (isset($_POST['search'])){
  2. $_SESSION['szukane'] = 1;
  3. }
  4. if (!isset($_SESSION['szukane'])){
  5. }
  6.  
  7. else{
  8. tutaj kod wyszukiwarki
  9. }

Ale dalej wyświetla błąd.

Sesja już działa ponieważ zalogowałem się na stronę ale nie wiem jak można to podpiąć pod stronę wyszukiwania, żeby pozbyć się tego błędu.


Poprawiłem to w ten sposób, użyłem sesji logowania ponieważ przed wejściem na serwis trzeba się zalogować ale niestety dalej wyświetlany jest błąd :/

if (!isset($_SESSION['logged'])){
}

else{tutaj kod}




Ten post edytował Puchatek320 5.11.2019, 23:25:53
Go to the top of the page
+Quote Post
dublinka
post 7.11.2019, 07:32:37
Post #5





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


  1. if(isset($_POST['szukana'])){
  2. $_SESSION['szukana']=$_POST['szukana'];
  3. }else{
  4. $_SESSION['szukana'] = $_SESSION['szukana'] ;
  5. }
  6.  
  7. if(isset($_SESSION['szukana'])) II (isset($_POST['szukana']))
  8. {
  9. if(isset($_POST['szukana'])){
  10. $szukaj=$_POST['szukana'];
  11. }else{
  12. $szukaj= $_SESSION['szukana'] ;
  13. }
  14. // tu kod szukarki. $szukana to argument funkcji do wyszukania (fraza)
  15. }


Ten post edytował dublinka 7.11.2019, 07:54:13


--------------------
Go to the top of the page
+Quote Post
nospor
post 7.11.2019, 10:41:32
Post #6





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




@dublinka dwa II obok siebie to nie OR... Dwa || a i owszem.
Pozatym twoj kod nie rozwiazuje problemu w zaden sposob. Jak juz wspomniano wczesniej: form ma isc GETem a nie POSTem. Sesja tu nic nie poprawia


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
dublinka
post 7.11.2019, 19:34:27
Post #7





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(nospor @ 7.11.2019, 09:41:32 ) *
@dublinka dwa II obok siebie to nie OR... Dwa || a i owszem.
Pozatym twoj kod nie rozwiazuje problemu w zaden sposob. Jak juz wspomniano wczesniej: form ma isc GETem a nie POSTem. Sesja tu nic nie poprawia

Pisalem na tel i owszem dalem zle znaki.
Jesli sesja bedzie zarejestorwna = przypisana z pola forma to da rade.Nawet jesli sie wroci z innej strony bo sesja ktora zawiera fraze bedzie brana jakoby byla wklepana w forma


--------------------
Go to the top of the page
+Quote Post
nospor
post 8.11.2019, 10:30:42
Post #8





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
esli sesja bedzie zarejestorwna = przypisana z pola forma to da rade.Nawet jesli sie wroci z innej strony bo sesja ktora zawiera fraze bedzie brana jakoby byla wklepana w forma

Ale przeczytaj z jakim problemem zglosil sie autor... sesja nic nie poradzi na fakt, ze jak klikniej COFNIJ w przegladarce to bedzie dostawal ciagle ten sam blad. Tutaj pomoze tylko wyslanie formularza GETem, jak juz wspominano


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Puchatek320
post 8.11.2019, 21:58:32
Post #9





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

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


Dzięki za pomoc panowie użyłem metody "GET" ale mam pytanie jak można się go pozbyć "&metoda=tag" z paska adresu lub jak ukryć. Chciałbym żeby zostało "http://localhost/index.php?search=test" bez "&metoda=tag" jak jest w tej chwili.

http://localhost/index.php?search=test&metoda=tag

Zauważyłem że jeśli zmienię metodę z post na get to wyszukiwarka nie działa :/ ktoś wyjaśni dlaczego?

$szukaj .= $_GET["search"];

$metoda = $_GET["metoda"];

zmieniłem z post na get i powinno działać bez problemu przesyłanie formularza, również ustawiłem na get.

Znalazłem przyczynę nie wiedzieć czemu jeśli zmienię metodę z post na get to jest wyświetlana strona głowna z filmami przy metodzie post wszystko jest okey, i wyszukiwarka dziala.

  1. <form class="form-inline" action="index.php?v=search" method="get" enctype="multipart/form-data" name="form1">
  2.  
  3. <input class="form-control mr-1" type="search" placeholder="Wyszukaj" name="search">
  4. <div class="mr-1 p-3">Szukaj w</div>
  5. <select name="metoda">
  6. <option value="tag" />Tagi Filmu
  7. <option value="nazwa" />Nazwa filmu
  8. </select><br></br>
  9. <div class="col-1"><button class="btn btn-light" type="submit">Znajdź</button></div>
  10. </form>


Ten post edytował Puchatek320 8.11.2019, 22:58:47
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: 29.03.2024 - 08:22