Autor Zpráva
protom1
Profil
Cau lidi,


Mam tady script, ktery me pripojuje na mobilniplatby, když nedám foreach a zadny funkce, tak mi to napíše to co potřebuju v emulátoru, ale když tam dám funkce a foreach, který potřebuju, tak mi to hodí error, že to nepobralo tu hlavicku ...

prosím poradte mi ... nevím si s tím rady a dělám tu už asi 1 den.

<?php
require_once dirname(__FILE__)."/config.php";
require_once dirname(__FILE__)."/admin_core.php";
// UKÁZKOVÉ GET HODNOTY Z SMS:
//{"timestamp":"2014-08-18T18:45:00","phone":"5ksq0upt","sms":"PLATBA SMSPLATBATEST test","shortcode":"9033399","country":"CZ","operator":"VODAFONE","att":"1 ","id":"1408380300703"}
//$cenaSms = str_replace("90333", "", $_GET["shortcode"]);
$vyhra = str_replace("PM VZH ", "", $_GET["text"]);


    $resp = getResponse($vyhra);

foreach ($resp as $key => $value) {
    $nazev = $value['nazev'];
    $vyh_poz = $value['vyhra_poz'];
    $pozice = $value['pozice'];
}

if($pozice == $vyh_poz) {
    Header("HTTP/1.1 200 OK");
    echo "Gratuluji, vyhrál jste " . $nazev .". Nyní nás prosím kontaktujte skrze kontaktní formulář. Děkuji.";
    header('Content-Type: text/plain; charset=UTF-8');    
    //deletePozici($vyhra);
} else {
    Header("HTTP/1.1 200 OK");
    echo "Je nám líto ale nevyhrál jste. Vaše pořadí sms je: " . $pozice . ".";
    //changePozici($vyhra);
    header('Content-Type: text/plain; charset=UTF-8');    
    

}

?>

Díky moc
Protom1
Jozin
Profil
Zdravím,

chyba asi bude v getResponse, protože pokud vrátí prázdný výsledek, tak foreach bude přeskočen, následná podmínka musí vyhodit chybu, jelikož proměnná $pozice neexistuje. Error, že to nepobralo hlavičku moc nechápu, možná by se ten error hodilo tady napsat,

Jozin.
protom1
Profil
Váš skript vrací nesprávný HTTP Status kód. Je vyžadován status code 200 nebo 204.


Ale kdyby přece nefungovala proměná, tak to hodí else, tím pádem by to mělo jít ..


a divné taky je, že když udělám tohle, tak to funguje, prostě to musí být tím, že tam nesmějí být funkce, protože i když to funguje a já pustím to changePozici();, tak to přestane jít ..
<?php
require_once dirname(__FILE__)."/config.php";
require_once dirname(__FILE__)."/admin_core.php";
// UKÁZKOVÉ GET HODNOTY Z SMS:
//{"timestamp":"2014-08-18T18:45:00","phone":"5ksq0upt","sms":"PLATBA SMSPLATBATEST test","shortcode":"9033399","country":"CZ","operator":"VODAFONE","att":"1 ","id":"1408380300703"}
//$cenaSms = str_replace("90333", "", $_GET["shortcode"]);
$vyhra = str_replace("PM VZH ", "", $_GET["text"]);


    /*$resp = getResponse($vyhra);

foreach ($resp as $key => $value) {
    $nazev = $value['nazev'];
    $vyh_poz = $value['vyhra_poz'];
    $pozice = $value['pozice'];
}
*/
$a = true;

if($a) {
    Header("HTTP/1.1 200 OK");
    echo "Gratuluji, vyhrál jste " . $nazev .". Nyní nás prosím kontaktujte skrze kontaktní formulář. Děkuji.";
    header('Content-Type: text/plain; charset=UTF-8');    
    //deletePozici($vyhra);
} else {
    Header("HTTP/1.1 200 OK");
    echo "Je nám líto ale nevyhrál jste. Vaše pořadí sms je: " . $pozice . ".";
    //changePozici($vyhra);
    header('Content-Type: text/plain; charset=UTF-8');    
    

}

?>
Kubo2
Profil
protom1:
Skús zistiť, aký HTTP status ti tvoj skript vracia.

Mimochodom, dáta, ktoré obdržíš v $_GET['text'], sú vo formáte JSON, takže by sa ti mohly hodiť PHP funkcie ako json_decode().
protom1
Profil
Vraci to http: 500 ... error ..
Kubo2
Profil
protom1:
Máš definované funkcie changePozici() a deletePozici()? V skripte je niekde fatálna alebo syntaktická chyba, ktorá pri vypnutí vypisovania chybových hlášok PHP spôsobí odosielanie HTTP 500.

Poznámka, odosielanie hlavičiek po výstupe nemá žiadny efekt a generuje E_WARNING.
Jozin
Profil
protom1:
Nedefinovaná proměnná, navíc pokud je nastaveno, že errory nejdou vidět a zapříčíní rovnou error 500, vyvolá notice (o čemž jsem v první reakci mluvil), která v dané situaci může error 500 vyvolat. Zkus danou proměnnou inicializovat před foreach, pokud error 500 nezmizí, tak jsem se spletl: tak jako tak se jedná o chybu, doporučuji tento článek od Jakuba Vrány.

EDIT:
tak dvě proměnné: $pozice a $vyh_poz, v druhé ukázce proměnnou $a inicializuješ, proč né ve výsledném kódu? Pokud jsem se mílil a i po opravě to nejede, chtělo by to i obsah volaných funkcí.
protom1
Profil
tady jsou funkce
<?php
 

 function getWinners() {
     $query = "SELECT * FROM vyherci ORDER BY id DESC";
     $result = mysql_query($query);
 
     $arr = array();
        
        while($item = mysql_fetch_array($result)) {
            $arr[count($arr)] = $item;
        }

    return $arr;

 }


 function getResponse($vyhra) {

    $query = "SELECT * FROM vyhry WHERE id = " . $vyhra . "";
    $result = mysql_query($query);
    $arr = array();
        
        while($item = mysql_fetch_array($result)) {
            $arr[count($arr)] = $item;
        }

    return $arr;
 }

 function changePozici($vyhra) {

     $query = "SELECT * FROM vyhry WHERE id = " . $vyhra . "";
     $result = mysql_query($query);
     $pozice = mysql_fetch_array($result)['pozice'] + 1;

     $query = "UPDATE vyhry SET pozice = " . $pozice . "";
     $result = mysql_query($query);


 }

 function deletePozici($vyhra) {
     $query = "UPDATE vyhry SET pozice = 0 WHERE id = " . $vyhra . "";
     $result = mysql_query($query);
 }

?>



Aj boze, já sem takový kokot, ted jsem na to prisel, daval sem do db Id cislo jako retezec v uvozovkach NO DO PICE !! :))

Sry kluci a díky
Marschmallow
Profil
protom1:
Aj boze, já sem takový kokot, ted jsem na to prisel, daval sem do db Id cislo jako retezec v uvozovkach NO DO PICE !! :))
Nechete dát do zakázaných slov i tato - akorát bez diakritiky?

Moderátora nevolám schválně.
Kubo2
Profil
Marschmallow:

„Aj boze, já sem takový kokot, ted jsem na to prisel“
Nechete dát do zakázaných slov i tato - akorát bez diakritiky?

Len tak pre zaujímavosť, ako by si chcel napísať kokot s diakritikou? :-)
Marschmallow
Profil
Kubo2:
ako by si chcel napísať kokot s diakritikou? :-)
To neřeš :D
_es
Profil
Kubo2:
ako by si chcel napísať kokot s diakritikou? :-)
„Varianta s diakritikou“ je zakázaná: Odkaz.

Marschmallow:
Nechete dát do zakázaných slov i tato - akorát bez diakritiky?
To by nešlo odkázať na zaujímavé miesta (http://cs.wikipedia.org/wiki/Kokotsko) či zaujímavé osobnosti (http://cs.wikipedia.org/wiki/Kokot_%28p%C5%99%C3%ADjmen%C3%AD%29). A druhé slovo je vzhľadom na zameranie fóra asi ťažko zakázateľné: Délkové jednotky v CSS » Absolutní jednotky.
Joker
Profil
Kubo2:
Ale píce jde napsat s diakritikou :-)

Marschmallow:
Nechete dát do zakázaných slov i tato - akorát bez diakritiky?
Za mě ani ne. Byla tu i diskuse o zrušení těch stávajících. Já momentálně zastávám status quo; Je nesmysl se snažit filtrovat všechna možná sprostá slova, ale filtr se stejně používá primárně kvůli spammerům a u vložených slov jsou snad vychytané jejich výskyty uvnitř jiných slov (třeba špičatý).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: