Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP]Ponowne przesłanie formularza

Napisany przez: Puchatek320 4.11.2019, 22:45:34

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 = http://www.php.net/str_replace(" ", "$znakrozdzielenia", $szukaj);
  12.  
  13.  
  14. $klucze=http://www.php.net/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. http://www.php.net/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.  

Napisany przez: dublinka 5.11.2019, 08:15:32

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.

Napisany przez: kapslokk 5.11.2019, 08:27:00

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

Napisany przez: Puchatek320 5.11.2019, 23:08:56

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

  1. if (http://www.php.net/isset($_POST['search'])){
  2. $_SESSION['szukane'] = 1;
  3. }
  4. if (!http://www.php.net/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}



Napisany przez: dublinka 7.11.2019, 07:32:37

  1. if(http://www.php.net/isset($_POST['szukana'])){
  2. $_SESSION['szukana']=$_POST['szukana'];
  3. }else{
  4. $_SESSION['szukana'] = $_SESSION['szukana'] ;
  5. }
  6.  
  7. if(http://www.php.net/isset($_SESSION['szukana'])) II (http://www.php.net/isset($_POST['szukana']))
  8. {
  9. if(http://www.php.net/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. }

Napisany przez: nospor 7.11.2019, 10: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

Napisany przez: dublinka 7.11.2019, 19:34:27

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

Napisany przez: nospor 8.11.2019, 10:30:42

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

Napisany przez: Puchatek320 8.11.2019, 21:58:32

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)