Beste helpers. Ik heb een vraag. Op mijn site gebruik ik de mooie grafieken van fusioncharts (http://www.fusioncharts.com/free/). Doormiddel van de volgende code komt er een grafiek (dat werkt allemaal prima)
<script language="javascript" type="text/javascript">
var chart1 = new FusionCharts("FCF_MSLine.swf", "sampleChart", "640", "600");
chart1.setDataURL("data_periode.php?p=23");
chart1.render("chartdiv");
</script>
Nu kunnen gebruikers heel makkelijk mijn data (uitslagen) uitlezen en zelf gebruiken. Door data_periode.php?p=23 uit te lezen. Is er een manier om het ze iets lastiger te maken?
Is er bijvoorbeeld een optie om te zorgen dat externe het bestand niet kunnen oproepen maar alleen de flash file op deze pagina?
?
Onbekende gebruiker
15-06-2010 22:10
Nee, niet zo 1-2-3, en ik zie ook niet in waarom je dat zo 1-2-3 wilt doen.
Sowieso is de data die je nu dus beschikbaar stelt, beschikbaar...
Je zou het lastiger kunnen maken door iedere url uniek te maken. Dan moeten ze eerst die pagina waarin setDataURL aangeroepen wordt ophalen, daar de url uitvissen, ondertussen de sessie vasthouden, en dan kunnen ze de data uitlezen. Het is zeker niet onmogelijk, maar het is iets lastiger.
Laat de pagina waarin de charts getoond worden (dus de pagina waarin de verwijzing naar date_periode.php staat) in $_SESSION een unieke code zetten, en geef die ook mee aan de URL:
<?php
$chart_token = uniqid();
$_SESSION['chart_tokens'][] = $chart_token;
// Om ervoor te zorgen dat na 100x reloaden er niet 100 tokens inzitten
$_SESSION['chart_tokens'] = array_slice($_SESSION['chart_tokens'], -10);
In data_periode.php kijk je dan of 'token' in $_GET zit, en haalt hem er daar weer uit $_SESSION, zodat die token niet nog een keer gebruikt kan worden. Ik heb het een array van meerdere tokens gemaakt zodat het niet meteen raar gaat doen wanneer je meerdere charts in de pagina hebt, of wanneer je snel achter elkaar deze pagina in meerdere tabs opent.