Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne][PHP] przekierowanie z niepoprawnego URL
roghatt
post
Post #1





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


Witam
Moja strona się zmieniła i zmieniły się adresy URL.
Chcę aby stare adresy URL zaindeksowane w Google przekierowywały na stronę główną.
Strona ma adresy typu:
http://www.nazwastrony.pl/index.php?strona=2&id=2

1. W Google mam wejścia na stronę gdzie w adresie znajduje się ID nie używane i wtedy po wejściu nic się nie pojawia.
Czy jest to jakiś rodzaj błędu który można przekierować w htaccess?

Inny miałem pomysł... to ID mam pobierane z bazy i to id jest porównywane do id w konkretnej tabeli, jeśli id się zgadza to wtedy wyświetlane są dane.
  1. $id=$_GET['id'];
  2. $zapytanie = "SELECT * FROM tabela WHERE id='$id'";
  3. $wynik = mysql_query($zapytanie);
  4.  
  5.  
  6. while($row=mysql_fetch_array($wynik))
  7. {
  8. ....

Ja tutaj próbowałem jakoś IF zastosować, ale co jest zapisywane do $wynik jeśli to id nie istnieje w bazie? Próbowałem porównywać do 0, czyli że 0 wyników ale wtedy nic się nie wyświetla na stronie.

2. Jeśli ktoś wpisze w URL strona= tutaj jakaś cyferka pod którą nie istnieje na serwerze strona to wtedy pojawia się biała strona. Czy to jest też jakiś rodzaj błędu który można przekierować w htaccess?
Go to the top of the page
+Quote Post
muk4
post
Post #2





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


Takie błędy musisz obsłużyć w PHP.

Przykład:
  1. $id = (int)$_GET['id']; # pamietaj o zabezpieczeniach
  2. $zapytanie = "SELECT * FROM `tabela` WHERE `id`='$id'";
  3. $wynik = mysql_query($zapytanie);
  4. if(mysql_num_rows($wynik) == 0){
  5. echo 'Taka strona nie istnieje!';
  6. {


Wysyłasz zapytanie do bazy żeby zwrócił np. artykuł o danym id. Funkcja mysql_num_rows zwraca liczbę rekordów pasujących do zapytania.
Jeżeli nie ma artykułu o danym id to zwróci 0, bo nie ma żadnego pasującego rekordu.

Ten post edytował muk4 10.07.2011, 20:43:30
Go to the top of the page
+Quote Post
roghatt
post
Post #3





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


dzięki, to jest właśnie to.
Z ID wyciągane z bazy poradziłem sobie.

Ale niestety tego nie zastosuję do:
http://www.nazwastrony.pl/index.php?strona=2&id=2

elementu zawierającego id po "strona"
ID te mam skonfigurowane w pliku konfiguracyjnym gdzie dla każdego ID mam przypisany konkretny dział na stronie.
Czy tam też można w jakiś sposób w PHP napisać, że jeśli to ID nie istnieje to aby np. automatycznie przekierowywało na stronę główną.
Obecnie po wpisaniu nieodpowiedniego id po "strona" wyświetla się biała strona. Wtedy użytkownik od razu ucieka ze strony.
Tam ID mam przypisane w ten sposób:
  1. $podstrona_kontakt=8;

Wtedy wchodząc na
http://www.nazwastrony.pl/index.php?strona=8 otwiera się nam strona z kontaktem.
Ale właśnie jak już po wpisaniu innego id nieistniejącego mamy białą stronę.
Go to the top of the page
+Quote Post
muk4
post
Post #4





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


Pokaż kod który ładuje podstrony bo nie mogę sobie tego wyobrazić Jak sprawdzasz którą stronę otworzyć?
Go to the top of the page
+Quote Post
roghatt
post
Post #5





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


robię to switchem
  1. switch ($_GET['strona']) {
  2.  
  3. case $podstrona_kontakt:
  4. include ("kontakt.php");
  5. break;
  6. ....


oczywiscie to jest kawalek kodu dla jednej podstrony, tutaj jest ich tyle ile chce miec podstron

Ten post edytował freelinkz 10.07.2011, 21:15:43
Go to the top of the page
+Quote Post
muk4
post
Post #6





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


switch jest taki sprytny że ma opcję default. Poczytaj, zastosuj, pochwal się(?) co zrobiłeś.
Go to the top of the page
+Quote Post
roghatt
post
Post #7





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


aj no rzeczywiście, na początku olałem ten default bo wydawał mi się całkowicie niepotrzebny, teraz już wiem, że zrobiłem źle smile.gif

  1. switch ($_GET['strona']) {
  2.  
  3. case $podstrona_kontakt:
  4. include ("kontakt.php");
  5. break;
  6.  
  7. default:
  8. include ("index.php");
  9. break;
  10. }


Dzięki wielkie za pomoc i za podpowiedzi muk4

Ten post edytował freelinkz 10.07.2011, 21:31:58
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 Aktualny czas: 21.08.2025 - 08:28