Is er een manier om de initiator van een php script te achterhalen?
Ik bedoel: stel, er is een index.html. In deze html zit een link naar mijnscript.php. Is het dan mogelijk om in mijnscript.php te achterhalen dat deze gestart is door index.html
Ik wil er namelijk zeker van zijn dat de script aangeroepen is door index.html en niet dat iemand in een browser de script aan kan roepen.
Bedankt Ozzie PHP.
Ik wil inderdaad tegenhouden (beveiligen) dat iemand direct via een url de actie kan uitvoeren die eigenlijk vanuit een andere pagina geïnitieerd moet worden. Dus in eerste instantie wordt er een pagina opgebouwd, die een knop heeft om een andere pagina te starten. Dat wordt gedaan met een <a href=""> gedaan. Het is niet de bedoeling dat iemand die url in een browser gaat intypen en uitvoeren. Als ik dat op de een of andere manier kan tegenhouden...
1. In de eerste pagina plant je een vlaggetje in de sessie.
2. In de tweede pagina controleer je of dat vlaggetje bestaat. Bestaat het vlaggetje, dan is de eerste pagina inderdaad al bezocht. Bestaat het niet, dan is de eerste pagina nog niet bezocht tijdens de huidige sessie.
>> Ik wil inderdaad tegenhouden (beveiligen) dat iemand direct via een url de actie kan uitvoeren die eigenlijk vanuit een andere pagina geïnitieerd moet worden.
Kijk, ik had al zo'n vermoeden. Nu komen we ergens.
In de eerste (PHP) pagina:
<?php
# Set request as valid.
define('REQUEST_VALID', true);
?>
In de tweede (PHP) pagina:
<?php
# Abort request if invalid.
if (!defined('REQUEST_VALID')) exit;
?>
Op deze manier hoef je niet met sessies te werken.
Een andere oplossing die ik je zou aanraden is om al je PHP-bestanden buiten de webroot te plaatsen, dan kunnen ze nooit via de browser worden aangeroepen. Maar als dat om een of andere reden niet kan, dan is bovenstaande code de oplossing.
[size=xsmall]Toevoeging op 09/09/2020 16:08:29:[/size]
Ik lees nu je antwoord nogmaals. Als je van pagina "wisselt" via <a href=""> dan zul je wel een cookie of sesie moeten gebruiken. Ik ging er vanuit dat je van de ene naar de andere PHP-pagina gaat. In dat geval werkt mijn oplossing. Maar als je de gebruiker laat klikken op een link, zul je het anders moeten oplossen.
Sorry Thomas. Dit was niet mijn bedoeling. Ik heb vanaf het indienen van de vraag, het zo duidelijk mogelijk proberen neer te zetten. Ik probeerde al steeds met voorbeelden mijn vraag te verduidelijken. Blijkbaar ben ik daar niet in geslaagd. Ik zal er de volgende keren beter op letten.
Inderdaad. Op dit moment is het blijkbaar een probleem dat een bepaalde pagina / PHP-bestand op een zeker moment rechtstreeks / te vroeg wordt aangeroepen. De vraag is of het echt opgelost kan worden door op een vorige pagina een soort van controle in te bouwen die je mee kunt nemen / over kunt hevelen naar de pagina in kwestie of dat je misschien toch beter aan een andere aanpak kunt denken.
In andere woorden: het is zeer lastig om een soort van concreet voorstel te doen voor een redelijk abstracte probleemstelling.
Ook is het niet helemaal duidelijk waarom het uberhaupt een probleem is dat deze pagina ("mijnscript.php") rechtstreeks aangeroepen kan worden. Indien dit PHP-bestand in de webdirectory staat dan zou dit gewoon moeten kunnen, en is dit normaal gesproken gewoon mogelijk - het bestand is zonder extra toeters en bellen direct opvraagbaar. Anders, als dit toch niet de bedoeling is, is het misschien een kwestie van het bestand verplaatsen naar een niet-rechtstreeks-aanroepbare locatie. Maar voordat iemand zo'n voorstel doet hebben we meer informatie nodig over de aard van het probleem.
Ik mis op dit moment een (analyse van een) concrete situatieschets die leidt tot een probleem, die vervolgens kan leiden tot een oplossing.
Vergelijk het met een doktersbezoek. Indien een patiënt op gesprek komt met vage niet uitgesproken klachten dan kan een arts geen symptomen aanstippen die een mogelijke oorzaak aanwijzen, en kan dan dus ook met geen fatsoen een remedie voorschrijven.