• User

    Estrarre diversi valori da una variabile get

    Se ho una variabile get di questo tipo:

    codice PHP:
    b=PAY1_TRANSACTIONRESULT=KOP1PAY1_SHOPTRANSACTIONID=135P1PAY1_BANKTRANSACTIONID=

    Come posso estrarre il primo valore? Ossia "transactionresult=ko"

    Come potete vedere si tratta di una variabile get relativa ad una transazione di denaro, ossia un pagamento. A questa variabile get ho associato questo script:

    codice PHP:
    <?php
    $parm_b = (isset($_POST['b'])?$_POST['b']<img src="images/smilies/frown.gif" border="0" alt="">isset($_GET['b'])?$_GET['b']:NULL));
    if (isset($parm_b)) {
    $TrovataOTP = '';
    $a = explode("P1", $parm_b);
    foreach ($a as $v) {
    $val = explode("=", $v);
    if (ereg("^PAY1_OTP", $v)) {
    $TrovataOTP = $val[1];
    }
    }
    $nome_file = "merchant.ris";
    $array = file($nome_file);
    $ok = NULL;
    foreach ($array as $k => $v) {
    if ($TrovataOTP == trim($v)) {
    $CancellaOTP = trim($v);
    unset($array[$k]);
    $ok = TRUE;
    break;
    }
    }

    if (isset($ok)) { 
        $fp = fopen($nome_file,"wb"); 
        fwrite($fp,implode("",$array)); 
        fclose($fp); 
        print "La transazione è stata conclusa correttamente. "."Grazie per l'acquisto tornate presto a trovarci.<br>"; 
    } else { 
        print "La transazione non si è conclusa correttamente. "."Vi preghiamo di riprovare. Grazie.<br>"; 
    } 
    

    }

    Altro non fa che estrarre una password, vedere se esiste nel file di testo "merchant.ris" e se la trova cancellarla. A questo script vorrei aggiungere una condizione che verifica se il valore transaction è ok oppure no. Se è ok allora mi dice che il pagamento è concluso. Quindi preleva ii dati di un ordine dalla tabella "pagamenti", li copia nella tabella "archivio" e cancella i dati sempre dalla tabella pagamenti.

    Se la transaction non è ok, allora vengo rimandato alla pagina "pagamento.php".

    So che sicuramente non è semplice, ma vi chiedo qualche spunto, suggerimento, esempio. E' importantissimo


  • Super User

    [PHP]
    $valori = array();
    $stringa = "b=PAY1_TRANSACTIONRESULT=KOP1PAY1_SHOPTRANSACTIONID=135P1PAY1_BANKTRANSACTIONID=";
    $stringa_arr = explode('_', $stringa);
    // La stringa viene divisa in b=PAY1 + TRANSACTIONRESULT=KOP1PAY1 + SHOPTRANSACTIONID=135P1PAY1 + BANKTRANSACTIONID=
    foreach($stringa_arr as $v) {
    $temp = explode('', $v);
    $valori[] = $temp[0];
    }
    /
    $valori conterrà :
    0 => b=PAY1
    1 => TRANSACTIONRESULT=KO
    2 => SHOPTRANSACTIONID=135
    3 =>BANKTRANSACTIONID=
    */
    [/PHP]

    Questo però solo se la stringa ha sempre il suddetto "formato"
    Se ti interessa sapere solamente se la stringa contiene TRANSACTIONRESULT=KO puoi utilizzare la funzione eregi