0

PHP の変数スコープに問題があります。これが私のコードの構造です--

<?php
$loader = new ELLoad();
$sessionid = '';
$method = $_REQUEST['m'];
if (strcasecmp($method, "getfile") == 0) {
    global $loader;
    $loader->load($file['text']);
    global $sessionid;
    $sessionid = $loader->getSessionId();
} 
if (strcasecmp($method, "extract") == 0) {
    $extractor = new ELExtract();
    global $sessionid;
    $extractor->extract($sessionid); //$session id for some reason is still ' ' here
}

クライアントからのリクエストのシーケンスは、常にロードの後に​​抽出が続きます。$sessionid 変数が正しく更新されない理由を誰か教えてもらえますか?

4

2 に答える 2

1

$sessionid==''の場合は変化しないため、まだです。first conditionfalse

コードの改善:

$loader = new ELLoad();
$sessionid = $loader->getSessionId();
$method = $_REQUEST['m'];
if (strcasecmp($method, "getfile") == 0) {
    $loader->load($file['text']);
    // do more stuff
}
else if (strcasecmp($method, "extract") == 0) {
    $extractor = new ELExtract();
    $extractor->extract($sessionid);
    // do more stuff
}

また、最終的に個別の繰り返し条件で使用するのではなく、ケースに応じて使用$_GETまたは$_POST依存することをお勧めします。$_REQUESTelse if

于 2013-08-28T16:58:15.730 に答える