ugrás a tartalomhoz

Feltételes átirányítás

PogiG · 2006. Jún. 21. (Sze), 20.06
Üdv mindenkinek!

Két kérdésem lenne:

1. Adva van egy link, ha nincs engedélyezve a javascript, akkor betöltődik a linkben megadott file, de ha engedélyezve van a javascript, akkor a linket felülbíráva betölt egy másik file-t. Ez hogyan oldható meg?

2. A másik kérdés kicsit egyszerűbb: Hogyan lehet link esetében megvizsgálni, hogy létezik-e vagy sem. Azért kellene, mert, ha nem, létezik, akkor a JS -el betöltenék egy "Sajnos az álltalad keresett oldal nem elérhető..." tipusú oldalt a

Nem konkrét megoldásokat várok, csak ötleteket, mert én szeretném megírni, de nem tudom, hogya kezdjek hozzá.

Előre is köszönöm:

PogiG
 
1

Megoldások

Anonymous · 2006. Jún. 21. (Sze), 20.26
1. Nem a legjobb megoldás, de én úgy csinálnám meg, hogy az oldalon amire mutat a link kiírnám, hogy nincs JS, de tennék az elejére egy átirányítást JS-el. Így ha van JS továbbmegy, ha nincs kiírja, hogy nincs.

2. Erre a JS totál alkalmatlan. Ezt szerver szinten kell megoldani!
2

JS átirányítás

Anonymous · 2006. Jún. 21. (Sze), 20.27
A másik megoldás, ami most jutott eszembe, hogy a linknél onclick-be megaddod hogy hova menjen az user, ha van JS, href-be pedig hogy hova, ha nincs.
3

Nem rosz!

PogiG · 2006. Jún. 21. (Sze), 20.34
Közben nekem is beugrott egy megoldás:

function vizsgal()
{
document.getElementById('link1').href="van_script.html";
}
.
.
.
<body onload="vizsgal()">
<a id='link1' href="nincs_script.html">Link szövege</a>

De a link létezésének vizsgálatára nincs ötletem.
4

JS-el nem fog menni...

Anonymous · 2006. Jún. 21. (Sze), 20.50
Nézd meg ezt: http://weblabor.hu/cikkek/baratsagos404
5

Nem létezik

Bártházi András · 2006. Jún. 22. (Cs), 00.01
Tegyük fel, hogy JS-sel megoldható lenne az ellenőrzése, hogy létezik-e egy adott oldal, vagy nem. De mi az, hogy létezik?
6

Szerintem simán lehet

Hodicska Gergely · 2006. Jún. 22. (Cs), 02.25
Az pl. megteheti, hogy XmlHttpRequest segítségével küld egy HEAD kérést, és a getResponseHeader metódussal megnézi, hogy milyen státuszt kap vissza.


Felhő
7

Saját hoszt

Bártházi András · 2006. Jún. 22. (Cs), 07.04
A szépséghibája, hogy csak saját hosztra működik. De egy képnek megadva az URL-t, onError és onLoad segítségével megoldhatónak tűnik. Erre mondtam, hogy tegyük fel, mint lehetőség, hogy ezzel ellenőrizhető. De ugye ez nem fog jelenteni semmit - ha egy szerver nem 404-es hibát az vissza egy oldal nem találata esetén, hanem mondjuk átdob valahova, vagy hasonló, akkor lőttek az egésznek. Szerintem használhatatlan.
8

Köszönöm

PogiG · 2006. Jún. 22. (Cs), 07.31
Köszönöm mindenkinek a segítséget, úgy tűnik, ez nem nagyon járható út, valami más megoldást keresek.
11

ha van curl

toxin · 2006. Jún. 22. (Cs), 12.27

<?	

function linktest($link){
	$c = curl_init($link);
	curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($c, CURLOPT_NOBODY, 1);
	curl_setopt($c, CURLOPT_HEADER, 1);
	$link_headers = curl_exec($c);
	$curl_info = curl_getinfo($c);
	curl_close($c);
	switch (intval($curl_info['http_code']/100)) {
		case 2:
			// 2xx response codes mean the page is OK
			$status = 'OK';
			break;
		case 3:
			// 3xx response codes mean redirection
			$status = 'MOVED';
			if (preg_match('/^Location: (.*)$/m',$link_headers,$matches)) {
				$location = trim($matches[1]);
				$status .= ": $location";
			}
			break;
		default:
			// other response codes mean errors
			$status = "ERROR: $curl_info[http_code]";
	}
	return $status;
}

$link = 'http://weblabor.hu/forumok/temak/13972';
echo $link.' ... '.linktest($link).'<br/>';

$link = 'http://weblabor.hu/123';
echo $link.' ... '.linktest($link);
?>
http://toxin.hu/test_links.php
9

van rá megoldás

Hodicska Gergely · 2006. Jún. 22. (Cs), 11.10
Épp nem rég volt erről itt is thread, ezen korlát feloldására több módszer is van (mod_rewrite, mod_proxy, alkalmazás proxy), szükségleteknek megfelelően lehet könnyedén jó megoldást találni.


Felhő
10

igen, persze

Bártházi András · 2006. Jún. 22. (Cs), 11.58
A biciklire is lehet motort szerelni, mégis inkább robogót vesznek az emberek.
12

persze

Hodicska Gergely · 2006. Jún. 22. (Cs), 22.18
Érdekes, hogy nem olyan rég épp a third party szolgáltatások mellett érveltél.


Felhő
13

szezon

Bártházi András · 2006. Jún. 23. (P), 06.16
Ne keverjük már a szezont a fazonnal légyszi. Ilyenkor komolyan felidegesítesz. Egy linkellenőrző mióta third party szolgáltatás? Egyszerűen *ezt* a feladatot nem így kell megoldani. Azért bevezetni egy proxy-t, hogy leellenőrizd, hogy egy másik oldal milyen hibakódot ad vissza (ami mellesleg sokszor nem elég), ebben az esetben szerintem felesleges.

Akkor, *ha* a 404 detekt elég lenne, és *ha* a szervert meg lehetne kerülni, akkor talán valóban elég lenne egy kliens oldali linkellenőrző, mivel a szervert tehermentesíti, és nem utolsó sorban azt közli, hogy a kliens által elérhető-e az oldal, s nem azt, hogy a szerver által-e? De a szervert nem lehet megkerülni, akkor pedig már eleve cache kell egy ilyen feladatra, és akkor már eleve felesleges az egész AJAX bohóckodás, mivel eleve ki lehet úgy is küldeni az oldalt, hogy benne van az adott linkkel kapcsolatos elérhetőségi információ.

Nem az AJAX-szal, a third party adatokkal, stb., van gond, csak mindent a helyén kellene használni. Ha egy olyan megoldásról beszélünk, ami kiírja neked a szervereidet, és mellettük van egy nagy zöld vagy piros kijelző, ami visszajelzi, hogy élnek-e, és ezek folyamatosan frissülnek AJAX segítségével, akkor ez így egy használható megoldás lehet. De a feladat leírása alapján közel sem erről van szó.