ugrás a tartalomhoz

Átirányítási hurok

mrtom · 2009. Május. 13. (Sze), 12.03
Sziasztok!

Felteszem, megint nagyon alap dolgo1t kérdezek

Van egy link, amire ha rákattintok, egy PHP funkciót hív meg, ami egy SQL táblában megváltoztat egy értéket, és ez jó is.
Firefox alatt a kiinduló oldal tér vissza, amin a link van, de IE alatt a tárhelyem kezdőoldalát hozza, ha pedig beszúrok egy header("location: ".$_SERVER['PHP_SELF']."?id=$id"); sort, az IE nem tudja betölteni, FF pedig a fenti üzenetet írja.
Most mi a teendő?
 
1

Mit kéne csináljon?

vbence · 2009. Május. 13. (Sze), 12.25
Írd le légyszives áttekinthetően, milyen oldalról milyen linkre kattintva kell meghívódjon az adott PHP és milyen oldalra kéne topvábbítson.

Mit tartalmaz az id paraméter, és megfelelő értéket adtál neki?
2

Szerintem érthető volt

mrtom · 2009. Május. 13. (Sze), 13.20
A link előtt van egy szám, amit az adatbázis x (az id mondja meg a sort) sorának y oszlopából nyer, a linkre kattolva a számláló nullázódik, és azt szeretném, hogy IE alatt is ugyanaz az oldal töltődjön vissza, amin a link van, a kérdésbe már említettem, hogy a PHP_SELF-el próbálkoztam sikertelenül. Ennél jobban nem tudom leírni!

A link:

<a href="'.zeroviews().'">Számláló nullázása</a>

A funkció:

function zeroviews(){
mysql_connect("host", "user", "pass");
mysql_select_db("dbase");
$id = mysql_real_escape_string($_GET['id']);

mysql_query("UPDATE table views = '0' WHERE id = $id");
}
3

Ajánlom figyelmedbe

vbence · 2009. Május. 13. (Sze), 13.58
http://hu.php.net/manual/en/reserved.variables.server.php

A linket tartalmazó URL-t általában megkapod itt:
$_SERVER["HTTP_REFERER"]
A link tartalazhat egy get paramétert a kívánt oldalra (ahova vissza szeretnéd ugratni a böngészőt). Neve például legyen returl. Ezesetben:
header("Location: " + $_GET["returl"]);
(Természetesen itt referer - és más - ellenőrzés is szükséges, küslő oldalak ne használhassák ugró platformnak a weblapodat).

Végül, ha egyértelmű a cél, ahova vissza szeratnél ugratni, akkor pl:
header("Location: /cikk.php?id=" + $id);
A PHP_SELF magát az éppen futó PHP-t forgja visszaadni, tehát egy végtelen hurkot generálsz. Ha ugyanaz a PHP végzi a tartlom generálását és a nullázási műveletet, akkor kell lennie egy paraméternek ami eldönti, hogy most megjelenítséről vagy nullázásról van szó. Ilyenről nem írtál.
4

Alternatív megldás

mrtom · 2009. Május. 14. (Cs), 11.25
Sajnos a te segítségeid nem működtek, pedig mindet kipróbáltam, utána is olvastam, ezért így oldottam meg, és működik:

Link:
<a href="show.php?id='.$id.'" onClick="'.zeroviews().'">Számláló nullázása</a>

A funkció ugyanaz header sor nélkül.

Nyugodtan véleményezd a megoldásomat.
5

vélemény

gex · 2009. Május. 14. (Cs), 11.31
bár nem engem kértél fel, szívesen véleményezem a megoldásod.
kevered a szerver és kliens oldalt. a html-ből nem tudsz közvetlenül php függvényt hívni. te html-ből csak egy url-t tudsz meghívni, a php-t arra tudod használni, hogy url-től függően növelje az adatbázisodban az értéket. a te megoldásodban a lekért show.php-ben tudod csak a zeroviews nevű php függvényed meghívni.
6

Hogy kellett volna?

mrtom · 2009. Május. 14. (Cs), 11.58
Hogy kellett volna megoldanom, hogy az egész szerver oldalon menjen? A header sorok nem működnek nekem.
Kérek mindenkit, hogy segítsen, már nincs ötletem, tanácstalan vagyok.