Hallo,
Ik gebruik onderstaande code (een php bestande genaamd play.php) om een video af te spelen. Mijn probleem is niet dat ik geen session_start gebruik dat gebruik ik namelijk wel (helemaal boven aan de pagina), maar de rest van de pagina heb ik voor het overzicht even weggelaten.
Zoals te zien is wordt er een bestand video.php aangeroepen. Ik heb voor deze opzet gekozen, omdat de bezoeker niet mag zien vanaf welke url (die verwijst naar een streaming server) de video gestreamd wordt. Video.php echoot de url onder voorwaarde dat $_SESSION["EchoOn"] op "Ja" staat. Vervolgens wordt meteen $_SESSION["EchoOn"] op "Nee" gezet, zodat een bezoeker niet de verwijzing die te vinden is bij de eigenschappen van het media player object (iets van video.php?V=1&W=320) kan knippen en plakken in de browser om zo alsnog achter de locatie op de streaming server te komen.
Hier de code van video.php:
Bovenstaande oplossing werkt perfect in IE. In FF wordt er echter geen video afgebeeld, omdat (ik na onderzoek achter ben gekomen) de variabele $_SESSION["EchoOn"] niet herkend wordt of in ieder geval $_SESSION["EchoOn"] niet de waarde "Ja" heeft. Kennelijk kan door FF video.php niet 'in dezelfde sessie kijken' als waar play.php de variabele een waarde geeft.
Ik heb het idee dat dit komt, doordat play.php nog niet helemaal geladen is als video.php al wordt aangeroepen en dat zodoende de session_start in video.php geblockt wordt, waardoor de sessiedata vervolgens in video.php niet beschikbaar is.
Ik vermoed dat de reden dat het in IE wel werkt en in FF niet iets met cookies te maken heeft, maar het fijne weet ik hier niet van.
Wat ik dus wil is dat mijn oplossing ook in FF werkt en dan uiteraard voor zoveel mogelijk gebruikers (dus niet alleen gebruikers met bepaalde cookie-instellingen).
Is er iemand die me kan vertellen hoe ik bovenstaande oplossing aanpas, zodat deze ook in FF zal werken?
Ik heb al geprobeerd om met session_name de sessie een naam te geven en deze sessie dan ook weer op te roepen in video.php, maar ook dit geeft geen resultaat.
Ook heb ik al getest of het feit dat eerder in de code (dus voor het embed gedeelte dat door FF wordt gebruikt) ook al een verwijzing naar video.php staat er voor zorgt dat $_SESSION["EchoOn"] weer op "Nee" wordt gezet, maar dit is niet het geval.
Ik gebruik onderstaande code (een php bestande genaamd play.php) om een video af te spelen. Mijn probleem is niet dat ik geen session_start gebruik dat gebruik ik namelijk wel (helemaal boven aan de pagina), maar de rest van de pagina heb ik voor het overzicht even weggelaten.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| <? $_SESSION["EchoOn"] = "Ja"; ?> <div id="player"> <object id="MediaPlayer" codebase="http://activex.microsoft.com/activex/controls/mplayer/...f.cab#Version=6,4,7,1112" type="application/x-oleobject" standby="Loading Microsoft Windows Media Player components..." classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" width="<?=$Width?>" height="<?=$Height?>"> <param name="FileName" value="video.php?V=<?=$_GET["V"]?>&W=<?=$VideoWidth?>" /> <PARAM NAME="stretchToFit " VALUE="0"> <param name="ShowControls" value="1" /> <param name="AnimationAtStart" value="0" /> <param name="ShowStatusBar" value="1" /> <param name="ShowDisplay" value="0" /> <param name="Autostart" value="1" /> <param name="TransparentAtStart" value="0" /> <embed name = "MediaPlayer" stretchToFit = "0" type = "application/x-mplayer2" pluginspage = "http://www.microsoft.com/Windows/MediaPlayer/download/default.asp" src = "video.php?V=<?=$_GET["V"]?>&W=<?=$VideoWidth?>" autostart = "1" showcontrols = "1" showdisplay = "0" showstatusbar = "1" width = "<?=$Width?>" height = "<?=$Height?>" ></embed> </object> </div> |
Zoals te zien is wordt er een bestand video.php aangeroepen. Ik heb voor deze opzet gekozen, omdat de bezoeker niet mag zien vanaf welke url (die verwijst naar een streaming server) de video gestreamd wordt. Video.php echoot de url onder voorwaarde dat $_SESSION["EchoOn"] op "Ja" staat. Vervolgens wordt meteen $_SESSION["EchoOn"] op "Nee" gezet, zodat een bezoeker niet de verwijzing die te vinden is bij de eigenschappen van het media player object (iets van video.php?V=1&W=320) kan knippen en plakken in de browser om zo alsnog achter de locatie op de streaming server te komen.
Hier de code van video.php:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| <? session_start(); include_once("../include.php"); //verbinding met db $video = $_GET['V']; $sql = "SELECT `url` FROM `video` WHERE `id` = $video"; $query = mysql_query($sql) or die(mysql_error()); $result = mysql_fetch_object($query); $vid = "$result->url"; $bitrate = 0; switch ($_GET["W"]) { case "160": $bitrate = "43"; break; case "320": $bitrate = "282"; break; case "512": $bitrate = "564"; break; case "640": $bitrate = "1073"; break; } $url = "mms://adresvandestreamingserver/" . $bitrate . "-" . $vid . ".wmv"; if ($_SESSION["EchoOn"] == "Ja") { echo $url; } ?> |
Bovenstaande oplossing werkt perfect in IE. In FF wordt er echter geen video afgebeeld, omdat (ik na onderzoek achter ben gekomen) de variabele $_SESSION["EchoOn"] niet herkend wordt of in ieder geval $_SESSION["EchoOn"] niet de waarde "Ja" heeft. Kennelijk kan door FF video.php niet 'in dezelfde sessie kijken' als waar play.php de variabele een waarde geeft.
Ik heb het idee dat dit komt, doordat play.php nog niet helemaal geladen is als video.php al wordt aangeroepen en dat zodoende de session_start in video.php geblockt wordt, waardoor de sessiedata vervolgens in video.php niet beschikbaar is.
Ik vermoed dat de reden dat het in IE wel werkt en in FF niet iets met cookies te maken heeft, maar het fijne weet ik hier niet van.
Wat ik dus wil is dat mijn oplossing ook in FF werkt en dan uiteraard voor zoveel mogelijk gebruikers (dus niet alleen gebruikers met bepaalde cookie-instellingen).
Is er iemand die me kan vertellen hoe ik bovenstaande oplossing aanpas, zodat deze ook in FF zal werken?
Ik heb al geprobeerd om met session_name de sessie een naam te geven en deze sessie dan ook weer op te roepen in video.php, maar ook dit geeft geen resultaat.
Ook heb ik al getest of het feit dat eerder in de code (dus voor het embed gedeelte dat door FF wordt gebruikt) ook al een verwijzing naar video.php staat er voor zorgt dat $_SESSION["EchoOn"] weer op "Nee" wordt gezet, maar dit is niet het geval.