Autor Zpráva
Tombik
Profil *
Zdravím, mám aplikaci pro přijímání SMS plateb od providera. Ten má svůj systém nasměrovaný na jeden soubor (platba.php) kam přes GET posílá parametry platby. Vše fungovalo až do nynějška, kdy jsem musel systém upravit. Úpravy musím zachovat (nebo najít alternativu). Při rozběhnutí skriptu platba.php providerem (či kýmkoliv) ovšem server odpoví 500 a to i na různých hostingách.

Nemám tušení v čem by mohla být chyba, snad mi poradíte vy :)

platba.php
<?php
/*************************************************/
/*                                               */
/*     MOBILE PAYMENT PROCESSING                 */
/*        Author: Josef Burger; http://jobu.cz   */
/*        Copyright: (c) Josef Burger            */
/*        Version: 1.0                           */
/*        Relase: 2012-02-12                     */
/*                                               */
/*************************************************/
// Based on B:CMS Libraries and BLC (Burger Library Core)




// IP Protect  [195.47.87.160 - 195.47.87.191]
//    Simple protect, all unauthorized access are abborted

/*  $ip = $_SERVER['REMOTE_ADDR'];
  $ip_e = explode('.', trim($ip));

  $ip_end = (int)$ip_e[3];
  unset($ip_e[3]);
  $ip_ch = implode('.', $ip_e);
  if(!($ip_ch == '195.47.87' and (($ip_end >= 160) and ($ip_end <= 191)))) {exit('spatna ip');}

       */



// URL decode
  if(empty($_GET['text']) or empty($_GET['price'])) exit('chybi text ci price (get) parametr'); // Base protection
  $user = $_GET['text'];
  $user = str_replace('pm+merver+','',$_GET['text']);
  $price = (int)$_GET['price'];
  




// Edit user to VIP user
  require_once '_config.php';
  require_once 'i_database.php';
  require_once 'c_mysql.php';
  
  $db = new Mysql();
  define('_timestamp', date('Y-m-j H:i:s')); define('_ts', _timestamp); // TimeStamp
  define('end_ts', date('Y-m-j H:i:s', strtotime('+'.$vip_time[$price].' day')));

  $db->q("UPDATE `permissions_inheritance` SET `vip-end-time` = '".end_ts."', `parent` = '"._parent_vip."' WHERE `child` = '$user'");
  $response = "Dekujeme $user, platbu jsme prijali a VIP Vam bude brzy aktivovano. Merver.cz";
  Header ("Content-type:text/plain");
  Header ("Content-length".strlen($response));
  echo $response;
  exit(200);

?>
Poněvadž kód nefunguje, můžete si ho vyzkoušet třeba zde http://tombik.cz/platby/platba.php?price=20.000&operator=tmo&text=pm+merver+vatra37&hash=xzc8yipt&msisdn_gw=9033320&att=4&id=295090

Díky za pomoc!
Mike8748
Profil
Tombik:
- řádek 53, chybí ti dvojtečka za Content-length
- co přesně očekáváš od řádky 55? tak jak je to napsaný tak tvůj kod říká že selhal s chybou 200 (což přepokládám bude problém který apache převede na zmíněnou chybu 500). pokud u exit() chceš mít parametr, tak snad jedině nulu, že tvůj skript skončil úspěšně.
Tombik
Profil *
Mike díky, tvoje poznámky mi pomohly vyřešit problém. (lock prosím)

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: