if en else

Status
Niet open voor verdere reacties.

xvilo

Gebruiker
Lid geworden
14 dec 2008
Berichten
492
hoi,
ik ben nog niet zo goed met php en vBulletin en phpBB en IP.Board

zoals jullie mischien al in de vorig post hebben gelezen dat ik een nieuwe signature heb:thumb:

maar ik wil deze signature zo beveiligen dat alleen mensen die zijn ingelogd op een Vbulleting, phpBB of een IP.Board forum zijn de website kunnen bekijken en anders een textje zien van dat ze het niet kunnen bekijken en moeten inloggen!

zat er aan te denken om dit te doen via de if/else theorie maar hoe moet ik beginen
en wat zijn de inlog codes voor die CMS systemen

ik heb al dit op de plaats van ??? moeten nog dingen komen!!

PHP:
if  (??????*) {   
echo "include("sig.php");";  

} else if (??????**) {   
echo "include("sig.php");";  

} else if (??????***) {   
echo "include("sig.php");"; 

} else {   
echo ( "<h1><b>je moet ingelogd op een forum zijn (fora moeten op phpBB, vBulletin of IP.Board gebasseerd zijn</b></h1>!!");   
}

of zou ik deze "beveileging" anders moeten aanpakken??

* phpBB code
** vBullting code
*** IP.Board code
 
Hoi xvilo,
Ik vraag me af of het kan: opvragen of iemand op een andere site is ingelogd.
  • Het ergens ingelogd zijn wordt m.i. lokaal vastgelegd in een cookie op de pc van de bezoeker. En volgens mij kan je vanuit een andere website nóóit bij dat cookie komen om het te controleren.
Als dat zou kunnen, zou ik bv. op mijn site kunnen checken of jij als bezoeker op dat moment bent ingelogd op ... helpmij.nl, of op de ing-bank, of op de site van mijn concurrent, of op een dating-site, of ... enz.
Zo zou ik een mooie database kunnen aanleggen waar iemand met een bepaald IP allemaal geregistreerd staat als gebruiker...
According to the cookie specification, any cookie set for one domain, must not be sent to any other domain. Therefore, if you set a cookie in your user's browser on one domain, that cookie will not be available on any other domain.
(http://www.tutorialized.com/tutorial/Implementing-Cross-Domain-Cookies/372)
Er zijn wel mogelijkheden om "cross-domain-cookies" te plaatsen, maar dat kan alleen maar vanaf de verzendende site, en niet zomaar van buiten af.
En dan nog schijnen een aantal browsers het om (terechte!) veiligheidsredenen niet toe te staan.

Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
Jammer

Dit zou dus niet kunnen!

Dan de vraag hoe ik sports nou goed kan beveilegen
 
mijn onderschrift.

om hem op een antal fora toe te staan moet ik hem beveiligen en ik dacht dat het mischien kon om te kijken of iemand is ongelogd ja of te nee
 
Dat gaat inderdaad niet lukken. Je kunt niet zien of iemand ingelogd is op een andere website zoals CSS aangaf. Wat je hoogstens kunt doen is een wachtwoord zetten op de site zelf, maar goed sowieso is het een beetje een loze bescherming lijkt me? Gezien iedereen zich gewoon kan registreren op dit forum.
 
Wat wel kan, is nagaan of de bezoeker via een link op een bepaalde site is binnengekomen (niet of die bezoeker daar is ingelogd):

Check: developerscorner.nl/csshunter/tests/kombinnen.php

Gebruikte code in kombinnen.php:
PHP:
<?php
if (isset($_SERVER['HTTP_REFERER'])){ // als via een link binnengekomen,
	// en als deze link in een pagina stond met developerscorner in de url:

	if(ereg('developerscorner', $_SERVER['HTTP_REFERER'])){ 
		header ("Location: devcor.htm"); // dan redirecten naar deze pagina
		break; // en stop uitvoeren php
	}
}
header ("Location: else.htm"); // anders redirecten naar deze pagina
?>
Dat is al de helft! :)

Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
ereg? Dat is wel heel oud hè. ;)
 
@csshunter; hoe jij het gebruikt moet strpos() ook werken.
Daarnaast werkt break; ook niet in die context, dat is meer voor switches / loops. Nu zal dit een fatal error geven.

Verder is een referrer niet verplicht om mee te sturen; kun je dus ook niet op vertrouwen.
En uiteraard zal die vervallen na een 2e pageview.
 
Laatst bewerkt:
Tja, ik ben totaal geen held met php, dat is niet zo mijn jachtterrein; al probeer ik wel eens wat trial & error-achtigs. En dan krijg ik uitbranders. ;)

Alleen:
Daarnaast werkt break; ook niet in die context. (...) Nu zal dit een fatal error geven.
In mijn testpagina vanaf kombinnen.php merk ik niets van een fatale error, het werkt gewoon; en zonder de break bleek ie (ook tot mijn verbazing) het niet te doen... raar he?
 
Je moet inderdaad exit; gebruiken, niet break;

Vergeet exit; nooit, het kan echt voor heel rare bugs zorgen. (Zeg ik helaas uit ervaring.)
 
Oké: hier leer je nog eens wat! :)
break; is nu vervangen door exit;, en ereg() door strpos().
Hiermee heb ik:
PHP:
<?php
if (isset($_SERVER['HTTP_REFERER'])){       // als via een link binnengekomen
	$ref = $_SERVER['HTTP_REFERER'];        // dan is dit de pagina van waaruit gelinkt
	$needed = 'developerscorner';           // nodig woord uit de domeinnaam
	if ( strpos($ref, $needed) !== false ){ // als link van domeinnaam met $needed kwam
		header ("Location: okido.htm");     // dan redirecten naar deze pagina
		exit;                               // en stop uitvoeren php
	}
}
header ("Location: vanbuiten.htm");         // anders redirecten naar deze pagina
?>
Wat roet in het eten kan strooien: iemand kan op zijn/haar browser de "referer" melding hebben gedisabled. Daarvoor een waarschuwing ingebouwd op de pagina "van buiten".
Kan dit de goedkeuring wegdragen?

=====
Blijf ik zitten met de opmerking:
Verder is een referrer niet verplicht om mee te sturen; kun je dus ook niet op vertrouwen.
Als je weet dat je eigen server de referer meestuurt, en door het schakel-mechaniek wordt daarop getest, dan is er toch niets aan de hand?

=====
En de opmerking:
En uiteraard zal die (referer) vervallen na een 2e pageview.
Bij de eerste pageview wordt men meteen geredirect naar een andere pagina. Van daar uit kan men niet de pageview herhalen: want dan blijf je op die andere pagina, en er staat geen link op naar de schakelpagina (behalve op de test-pagina ;) ). En herhalen vanuit de externe site herhaalt het proces, en zo kom je er ook niet bij.
Dus dit zal in het algemeen niet van toepassing zijn, dacht ik. *)

Met vriendelijke groet,
CSShunter
____________
*) Behalve als iemand zo slim is om online een developerscorner-pagina real-time te editten, daar een link naar de kommaarbinnen.php op te plaatsen, en die dan aan te klikken. Dus 100% betrouwbaar is het niet, maar voor het gros van de bezoekers zal het denkelijk wel meevallen.
 
Laatst bewerkt:
Ik hoef niks in realtime te doen; kan gewoon een developerscorner.html oid gebruiken.
Of gelijk naar okido.htm gaan.

Dat een referrer niet verplicht is geld voor de client; een browser is niet verplicht de referrer mee te sturen.

Al met al niet echt een betrouwbare oplossing, maar maakt ook niet echt uit voor zo'n type script tbh
 
Ik hoef niks in realtime te doen; kan gewoon een developerscorner.html oid gebruiken.
Of gelijk naar okido.htm gaan.
In het eerste geval is gewoon aan de voorwaarde voldaan, da's niet erg.
Voor het tweede geval: da's waar, als je de paginanaam weet kan je er rechtstreeks op af hobbelen.
Dat valt te verhelpen door van de okido.htm ook een okido.php te maken, met vergelijkbare php-schakelaar (intussen aangepast in het voorbeeld).

Al met al niet echt een betrouwbare oplossing
Eens! Een login-systeem is te prefereren, maar sluit niet direct aan bij de oorspronkelijke vraag.
Vandaar: ik stop maar eens met deze exercitie. :)

Met vriendelijke groet,
CSShunter
___________
PS: De tbh moest ik opzoeken, tbh. ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan