Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Przeróbka wyszukiwarki
Forum PHP.pl > Forum > Przedszkole
mariuszzzzzz
Witajcie

Po długim czasie zalazłem czas na przerobienie mojej wyszukiwarki php. Moja wyszukiwarka działa, ale nie jest oparta na najnowszym standardzie PHP i Mysql. Moje pytanie do was: czym mam się posłużyć aby moja wyszukiwarka po wpisaniu nazwy jakiegoś miasta zmieniała też adres strony. I to za każdym razem. Coś w stylu wyszukiwarki na
Cytat
noclegowo.pl
. Potrzebuje taką wyszukiwarke aby potem móc te podstrony pozycjonować w wyszukiwarkach. Wtedy nie musze tworzyć podstron dla każdego miasta.

Z góry dziękuje za pomoc.
peter13135
Użyj GET, zamiast POST.
mariuszzzzzz
zrobiłem tak jak napisałeś tylko że czy taka metoda jest bezpieczna i jak mogę usunąć z adresu niepotrzebne informacje:
http://www.nazwa.pl/sql.php?miasto=Warszawa&x=38&y=13
kujol
Metoda ta jest bezpieczna tylko wtedy, gdy dane przefiltrujesz przed wysłaniem zapytania do bazy.
Zbuduj funkcje, która sprawdzi czy dane z get są prawidłowe, jesli nie to niech pokaże stronę błędu.
mariuszzzzzz
ok, a jak moge sie pozbyc niepotrzebnych danych w adresach?
kujol
A co jest nie potrzebne w tym adresie?
mariuszzzzzz
zamiast http://www.nazwa.pl/sql.php?miasto=Warszaw...p;x=38&y=13
wolałbym mieć http://www.nazwa.pl/miasto/Warszawa.html

moge to zrobić w htaccess?
Beniooo
  1. <form method="POST" name="form" action="plik.php">
  2. <input type="text" name="pole1" id="pole1"><br>
  3. <input type="text" name="pole2" id="pole2"><br>
  4. <input type="text" name="poleinne" id="poleinne"><br>
  5. <input type="submit" name="Wyślij" onClick="java script:document.form.action='plik.php?pierwszepole='+document.getElementById('pole1').value+'&poledrugie='+document.getElementById('pole2').value">
  6. </form>

Pola, które chcesz dać w linku podrzucasz w onClick w submicie
kujol
Poczytaj o ładnych url'ach. Można to zrobić w samym htaccess lub tak jak tutaj:
nospor.pl/ladne-urle.html
mariuszzzzzz
w htaccess zrobiłem tak:

  1. RewriteRule ^miasto-([^-]+).html$ index1.php?miasto=$1&x=$2&y=$3 [L]


formularz zmieniłem:
  1. <form action="index1.php" method="get" enctype="multipart/form-data">
  2. <input class="gdzie" type="text" name="miasto" value="" />
  3. </div>
  4. <div id="wysz1b">
  5. <input type="image" class="search_btn" src="images/szukaj.png" alt="Szukaj" />
  6. </form>


teraz moge wejść na przyjazny adres wyszukiwarki czyli .../miasto-nazwamiasta.html ale jak wpisze do wyszukiwarki to odsyła mnie do adresu z parametrami.

@Beniooo
próbowałem ale nie działa.
Turson
Nie możesz czystym HTMLem przekierować pod ładny adres wyszukiwarki.
Najrozsądniejsze są 2 wyjścia:
- wysyłasz formularz pod plik, który odbierze nieładny url i przekieruje na podstawie parametrów GET pod ładny adres,
- parsujesz dane w js i przekierowujesz pod ładny url
mariuszzzzzz
wolałbym tą pierwszą metodę bo dane z formularza i tak wysyłam do index1.php. W tym pliku robie też walidacje formularza (mam nadzieje że jest poprawna). To musze to przekierowanie umieścić na początku skryptu w index1.php?

to jest część mojego pliku index1.php
  1.  
  2. if((isset($_GET['miasto'])))
  3. {
  4. if((!empty($_GET['miasto'])) && (preg_match("/^\d+([\.,]\d+)?$/",$_GET['miasto'])))
  5. {
  6. echo' Pisz poprawnie';
  7. }
  8. else
  9. {
  10.  
  11. $mysqli = new mysqli('localhost',
  12. 'user',
  13. 'pwd',
  14. 'baza');
  15.  
  16. if(!$mysqli)
  17. {
  18. die('Połączenie niemożliwe.');
  19. }
  20. $miasto=$_GET['miasto'];
  21. $sql = 'SELECT * FROM miasteczka WHERE miasto = "' . $miasto . '" AND ok = "yes" ';
  22. if($result = $mysqli->query($sql))
  23. {
  24. while($row=$result->fetch_array(MYSQLI_ASSOC))
  25. {
Turson
Tam gdzie masz linijki mówiące o tym, że walidacja przebiegła poprawnie, przekieruj
  1. header("Location: miasto-{$_GET['miasto']}.html");
mariuszzzzzz
umieściłem ten kod nad $mysqli = new mysqli i pokazuje mi błąd: Warning: Cannot modify header information - headers already sent
wynika z tego, że musze chyba umieścić ten kod na początku strony.
Turson
Wklej kod błędu w wyszukiwarkę to zobaczysz setki miliony odpowiedzi jak to poprawić.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.