[PHP][director] session probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DJ-R
  • Registratie: April 2004
  • Laatst online: 12-07 09:44
voor een vraag/antwoord spel in director heb ik een database met verschillnde multiple choice vragen, deze worden random aangeroepen door het bestand "vraag.php" in director via "getNetText" dit werkt. De speler kan kiezen uit antwoord a, b en c, het antwoord word ook via getNetText ("http://server/check.php?answer=C") gestuurd, dit werkt ook. om in "check.php" het goede antwoord bij de vraag op te halen word er in "vraag.php" een sessie aangemaakt met het id van de vraag

het probleem is dat de sessie die in "vraag.php" gemaakt word niet word herkend in "check.php" als ik deze via director aanroep. Als ik de php files in de browser test werkt het wel.

ik kan op de server zien dat als ik via director de php scripts aanroep er 2 verschillende sessies aan worden gemaakt en dat als ik ze na elkaar in de browser aan roep de sessie wel word herkend en allus dus gewoon werkt.

Het probleem zit dus niet in de scripts maar waarschijnlijk in de manier waarop director met urls omgaat (wat weer niet uit zo mogen maken omdat php serverside is)
of het heeft te maken met dat ik te weinig van sessions afweet.

Acties:
  • 0 Henk 'm!

  • sariel
  • Registratie: Mei 2004
  • Laatst online: 22-05-2024
eeuhm.....vraag het antwoord op door: check.php?question=1&answer=C ?

maar zou je misschien wat code kunnen laten zien, of een voorbeeld? het is namelijk nogal lastig uit te vinden wat je nou eigenlijk bedoelt......

Copy.com


Acties:
  • 0 Henk 'm!

  • DJ-R
  • Registratie: April 2004
  • Laatst online: 12-07 09:44
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
session_start();

require('cms/db_connect.php');

$query = "SELECT * FROM questions ORDER BY RAND() LIMIT 1";
$result = mysql_query($query) or die ("Query failed");
$row = mysql_fetch_array($result);

$question       = stripslashes($row['question']);
$answer_A     = stripslashes($row['answer_A']);
$answer_B     = stripslashes($row['answer_B']);
$answer_C     = stripslashes($row['answer_C']);
$id                 = stripslashes($row['question_id']);

$_SESSION['vraag_id'] = $id;

$vraag = nl2br($question)."\n\n"."A: ".$answer_A. "\n"."B: ".$answer_B. "\n"."C: ".$answer_C;

echo $vraag;
?>


hier word dus de sessie aangemaakt met het vraag_id

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<? 
session_start();
if (isset($_GET['answer'])){
    require('cms/db_connect.php');
    
    $id =  $_SESSION['vraag_id'];
    
    $query = "SELECT * FROM questions WHERE question_id = $id";
    $result = mysql_query($query) or die ("Query failed");
    $row = mysql_fetch_array($result);
    $right_answer=stripslashes($row['right_answer']);
    if($_GET['answer']==$right_answer){echo"TRUE";}
}
?>

hier word gecontroleerd of de "$_GET['answer']"het goede antwoord bevat

[ Voor 16% gewijzigd door DJ-R op 17-03-2005 12:31 ]


Acties:
  • 0 Henk 'm!

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 11:30

Guldan

Thee-Nerd

Het enige wat mij opvalt is dat $session = $_SESSION; haal dat eens weg? werkt het dan wel? Verder zie ik niets.

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Acties:
  • 0 Henk 'm!

  • DJ-R
  • Registratie: April 2004
  • Laatst online: 12-07 09:44
die zat er in om iets te testen, heeft nu geen nut meer hem m dus ook maar even uit de post gehaald (het maakt trouwens geen verschil of die er wel of niet in zit)

Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Director zal waarschijnlijk geen cookies accepteren.

Een seesio wordt gekoppeld aan een browser met een cookie. ALs je die cookie niet accepteer en terug stuurd zal php een nieuwe sessie aan maken.

Je zou kunnen proberen de sessie id in de url mee te sturen.

Acties:
  • 0 Henk 'm!

  • DJ-R
  • Registratie: April 2004
  • Laatst online: 12-07 09:44
dat klinkt inderdaad wel logisch, maar dat zou betekenen dat director het session id zou moeten weten.
Het probleem is dat director met "getNetText" dus alleen plain text binnen haalt en dus niet een of andere array met de vraag, de antwoorden en het session id. Als dat zou kunnen had ik net zo goed het id van de vraag "los" binnen kunnen halen.

Volgens mij kan dat met "getNetText" dus niet, maar misschien is er een andere oplossing

Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Je kan in Direcotor toch wel iets doen als getNextText('http://server/?answer=C&PHPSESSID=<sessie_id>");

Dan zou in dorector alleen de sessie id moeten kunnen ophalen. Als ie in een browser draait lijkt me dat geen probleem, dan kan je dat uit de url halen.

Je zou evt. ook de sessie ide kunen ophalen door een php script aan te roepen met de volgende code
PHP:
1
2
session_start();
echo session_id();

Acties:
  • 0 Henk 'm!

  • DJ-R
  • Registratie: April 2004
  • Laatst online: 12-07 09:44
Suepahfly schreef op donderdag 17 maart 2005 @ 15:08:
Je kan in Direcotor toch wel iets doen als getNextText('http://server/?answer=C&PHPSESSID=<sessie_id>");
ja dat kan
Dan zou in dorector alleen de sessie id moeten kunnen ophalen. Als ie in een browser draait lijkt me dat geen probleem, dan kan je dat uit de url halen.
director movies hoeven niet perse in een window te draaien, maar kunnen ook als een executable uitgevoerd worden, dan is er dus geen URL en gaat dat verhaal niet op, heb nog wel even gezocht maar kon ook geen functie vinden die een session id op zou kunnen halen
Je zou evt. ook de sessie ide kunen ophalen door een php script aan te roepen met de volgende code
PHP:
1
2
session_start();
echo session_id();
Dit lijkt inderdaad de oplossing, ik laat het spel nu in het begin een sessie aanmaken en bewaar het id daarvan in een global, deze plak ik later achter de urls van "vraag.php" en "check.php"
maar is het "gevaar" hier niet bij dat als de speler te lang bezig is dat de sessions verlopen?
de global heeft dan het id nog wel maar als de sessie niet meer bestaat heeft dat weinig zin
Pagina: 1