Stránka 1 z 2

PHP Scriptík

Napsal: 07 kvě 2013, 11:29
od KotasMan
Zdravím , vedel by mi niekto pomôcť kde mám chybu alebo čo robím zle? Keď si chcem vyvolať callback cez testovaciu sms tak sa nič nestane proste sa nič nepripočíta ale keď to urobím manuálne link
Spoiler: zobrazit
www.mojlink.eu/xxx/kredit.php?sms=test&time=test&credit=2&custom_nick=4

Tak všetko funguje bez chyby. Prikladám aj script:

Kód: Vybrat vše

<?php
$dbhost = "xxx";
$dbuser = "xxx";
$dbpassword = "xxx";
$dbname = "xxx";

$credit = $_GET['credit'];
$id = $_GET['custom_nick'];

if(empty($id)) {
die("Error");
} else {
if(empty($credit)){
die("Error");
} else {

mysql_connect($dbhost,$dbuser,$dbpassword);
mysql_select_db($dbname);

$idquery = mysql_query("SELECT * FROM `authme` WHERE `id` = '$id'");
   if(mysql_num_rows($idquery) != 1) {
      die("Tento už. neexistuje");
   } else {
      
      $query = mysql_query("SELECT * FROM `authme` WHERE `id` = '$id'");
      while($rows = mysql_fetch_array($query)) {
         $kred = $rows['kredit'];
         $name = $rows['username'];
      }
   }

switch($credit) {

   case 2:
      $ukredit = 200 + $kred;
      mysql_query("UPDATE `authme` SET `kredit` =  '$ukredit' WHERE `id` = '$id' AND `username` = '$name'");
   break;
   
   case 50:
      $ukredit = 200 + $kred;
      mysql_query("UPDATE `authme` SET `kredit` =  '$ukredit' WHERE `id` = '$id' AND `username` = '$name'");
   break;
   
}
}
}
?>


PS: Nemusíte mi hovoriť že by to išlo urobiť lepšie. Viem o tom.

Re: PHP Scriptík

Napsal: 07 kvě 2013, 13:57
od Mysteria
Těžko říct, ideálně na zjištění chyby by bylo potřeba, aby ti ten skript logoval co dělá, třeba jednoduše do souboru.
Třeba jak máš:

Kód: Vybrat vše

if(empty($id)) {
die("Error");
}

Tak před die udělat aby to do nějakého txt souboru zapsalo něco jako "Prázdné IDčko." a tohle pro všechny podmínky, kde by to mohlo selhat. Pak si to zavolej manuálně, pokud to půjde, tak pošli testovací SMSku a pak se jenom podíváš do souboru, na kterým kroku to selhalo.

Re: PHP Scriptík

Napsal: 07 kvě 2013, 14:52
od Mysteria
Třeba takhle:

Kód: Vybrat vše

<?php
// Logování do souboru
function writeError($message) {
    
$date date('Y_m_d'time());
    
$time date('d. m. Y H:i:s: 'time());
    if ((
$file = @fopen('./errors_' $date '.log''a+')) !== false) {
        if (@
fwrite($file$time $message PHP_EOL) !== false) {
            if (@
fclose($file) !== false) {
                return 
true;                
            } else { return 
false; }                
        } else { return 
false; }
    } else { return 
false; }
}

$dbhost "93.91.240.151";
$dbuser "121777_mysql_db";
$dbpassword "xxx";
$dbname "121777_mysql_db";

$credit $_GET['credit'];
$id $_GET['custom_nick'];

if(empty(
$id)) {
    
writeError('Parametr URL neobsahuje IDčko.');
    die(
'Parametr URL neobsahuje IDčko.');
} else {
    if (empty(
$credit)) {
        
writeError('Parametr URL neobsahuje kredity.');
        die(
'Parametr URL neobsahuje kredity.');
    } else {
        
        
mysql_connect($dbhost,$dbuser,$dbpassword);
        if ((
$e mysql_error()) !== ''writeError($e); // Zalogování chyby
        
mysql_select_db($dbname);
        if ((
$e mysql_error()) !== ''writeError($e); // Zalogování chyby
        
$idquery mysql_query("SELECT * FROM `authme` WHERE `id` = '$id'");
        if ((
$e mysql_error()) !== ''writeError($e); // Zalogování chyby
        
if (mysql_num_rows($idquery) != 1) {
            
writeError('Uživatel s daným IDčkem v databázi neexistuje.');
            die(
"Tento uživatel neexistuje.");
        } else {
            
$query mysql_query("SELECT * FROM `authme` WHERE `id` = '$id'");
            if ((
$e mysql_error()) !== ''writeError($e); // Zalogování chyby
            
while($rows mysql_fetch_array($query)) {
                
$kred $rows['kredit'];
                
$name $rows['username'];
            }
        }
        switch(
$credit) {
        case 
2:
            
$ukredit 200 $kred;
            
mysql_query("UPDATE `authme` SET `kredit` =  '$ukredit' WHERE `id` = '$id' AND `username` = '$name'");
            if ((
$e mysql_error()) !== ''writeError($e); // Zalogování chyby
            
break;
        case 
50:
            
$ukredit 200 $kred;
            
mysql_query("UPDATE `authme` SET `kredit` =  '$ukredit' WHERE `id` = '$id' AND `username` = '$name'");
            if ((
$e mysql_error()) !== ''writeError($e); // Zalogování chyby
            
break;
        }
    }
}
?>


Výsledkem pak bude ve stejné složce jako skript soubor ve formátu errors_rok_mesic_den.log a v něm něco jako:

Kód: Vybrat vše

07. 05. 2013 12:49:40: Nemohlo být vytvořeno žádné připojení, protože cílový počítač je aktivně odmítl.
07. 05. 2013 12:49:40: Access denied for user ''@'localhost' (using password: NO)
07. 05. 2013 12:49:40: Access denied for user ''@'localhost' (using password: NO)
07. 05. 2013 12:49:40: Uživatel s daným IDčkem v databázi neexistuje.

Re: PHP Scriptík

Napsal: 07 kvě 2013, 15:40
od KotasMan
Počkať. To si mám ten súbor vytvoriť sám a potom to do neho bude logovať alebo sa to vytvorí samé? Lebo nahraj som to na FTP , nastavil tomu oprávnenia ale nič sa nestalo.

Re: PHP Scriptík

Napsal: 07 kvě 2013, 16:36
od Mysteria
Stačí nastavit tomu adresáři, kde je umístěnej ten skript práva na 777 a vytvoří se sám při prvním zápisu.
Samozřejmě pokud žádný z těch chyb nenastane, tak se nevytvoří. :)

Re: PHP Scriptík

Napsal: 07 kvě 2013, 17:16
od KotasMan
Nefunguje to, stále manuálne to pridá ale cez testovaciu sms nič ani sa log nevytvorí. (mám nastavené práva)

Re: PHP Scriptík

Napsal: 07 kvě 2013, 18:57
od Mysteria
Tak mě napadá, máš správně zadanou adresu toho skriptu v CP?

Re: PHP Scriptík

Napsal: 07 kvě 2013, 19:01
od KotasMan
mám, ešte raz to všetko skontrolujem.
EDIT:
Mám to tam správne tak, buď to ten callback nevyvolá alebo už neviem

Re: PHP Scriptík

Napsal: 07 kvě 2013, 20:02
od Mysteria
Přidej do toho mého skriptu nad ten tvůj první řádek $dbhost tohle:

Kód: Vybrat vše

writeError('URL zavolána.'); 
Za předpokladu, že máš nastaveny atributy adresáře na 777 a nic to nevypíše do souboru (nebo se ani nevytvoří), a máš správně nastavenou adresu, tak bych to tipnul, že ten callback nefunguje.

Re: PHP Scriptík

Napsal: 08 kvě 2013, 09:53
od zdenda204
Jak to tu tak čtu, jste si jistí že ty práva 777 nastavil složce kde ten skript je? Mám pocit že to nastavil skriptu :D