PHP ir SQL > PHP ir SQL - Klausimai ir pagalba

sms.php random funkcija

(1/3) > >>

m1tch5:
Sveiki :) iškilo tokia problemėle su sms.php failiuku, tai gal kas nors pagelbėsit.
Einam prie esmės...

Esmė tokia Vartotojas iš savo telefono siunčia sms t.y užklausą į mokejimai.lt serverį. Tuomet mokejimai.lt serveris siunčia užklausą į mano sms.php failiuką ir mano serveris sugeneravęs viska siunčia atgal mokėjimai.lt serveriui...kol galiausiai atsakymas(sms žinutė) pasiekia Vartotoją.
Štai kodas:

--- Kodas: ---<?php

    if ( goodRequest() ){ //patikriname ar žinute gauta iš reikiamo serverio.
    echo " Jusu zinute gauta."; //suteikiam atsakyma vartotojui siuntusiam SMS
    AddToLog("n".date("r")." |n".&#39; $_GET: &#39;.print_r($_GET, true)." |n".&#39; $_POST: &#39;.print_r($_POST, true)." | ".$_SERVER[&#39;REMOTE_ADDR&#39;]."n"); //išsaugome žinute faile.
} else {
    echo "žinute netikra."; //i faila kreipesi ne mokejimai.lt serveris, todel nieko daryti nereikia.
}
 
 
function AddToLog($str){ //funkcija sauganti gautas SMS žinutes i faila.
        $fh = @fopen("sms_log.txt", &#39;a&#39;); //sms_log.txt turi buti su irašymo i ji teisemis.
        @fwrite($fh, date(&#39;r&#39;)."nt".$str."n");
        @fclose($fh);
}


    function goodRequest(){
        $pKeyP = base64_decode(".._SKIP_.."); //nusikopijuokite is funkcijos failo, kuris yra specifikacijose.
        $pKey = openssl_pkey_get_public($pKeyP);
        if(!$pKey) return false;
        foreach($_GET As $key => $value) if($key!=&#39;_ss2&#39;) $_SS2 .= "|";
        $ok = openssl_verify($_SS2, base64_decode($_GET[&#39;_ss2&#39;]), $pKey);
        return ($ok === 1);
    }
?>
--- Baigti kodą ---

Tai va norėčiau įterpti daugiau sms atsakymų vartotojui. Ta prasme, kad būtų ne vienas atsakymas o keletas ir jie Vartotojui būtų siunčiami atsitiktiniu(random) būdu. Viskas turėtų atrodyti maždaug taip:

--- Kodas: ---<?php

    if ( goodRequest() ){ //patikriname ar žinute gauta iš reikiamo serverio.
    echo "Zinute1";
    echo " Zinute2";
    echo "Zinute3";
    echo " Zinute4";
    AddToLog("n".date("r")." |n".&#39; $_GET: &#39;.print_r($_GET, true)." |n".&#39; $_POST: &#39;.print_r($_POST, true)." | ".$_SERVER[&#39;REMOTE_ADDR&#39;]."n"); //išsaugome žinute faile.
} else {
    echo "žinute netikra."; //i faila kreipesi ne mokejimai.lt serveris, todel nieko daryti nereikia.

--- Baigti kodą ---
Ir ar išvis egzistuoja tokia funkcija? Na jei egzistuoja tai :) parašykit, o aš jau kaip nors ten susitvarkysiu.

Nesu didelis php žinovas, tai prašom labai 'nelazdavoti' jei labai nusišnekėjau, o pataisyti mane jei klystu :).

Haris:
mokejimai lt paima is to tavo sms.php visa outputa ir ji siuncia sms zinutes siuntejui . O tie patikrinimai , tai manau nelebai reikalingi ,tik gerai uzslekt ta sms.php faila kad piktavaliai negaletu per adreso laukeli pasidaryt kad jie be zinutes ta visa reikala ivykdytu pabandysiu parasyti sioki toki koda su random atsakymais

--- Kodas: ---<?php
    if ( goodRequest() ){
///Atsitiktine zinute///////////
$zinutes = array("zinute1","zinute2","zinute3","zinute4"); //Sudedame zinutes i masyva
$kiek=count($zinutes); //Suskaiciuojame zinutes
$rand=mt_rand($kiek); //Padarome atsitiktini skaiciu
echo  $zinutes[$rand] ;
/////////////////////////
    AddToLog("n".date("r")." |n".&#39; $_GET: &#39;.print_r($_GET, true)." |n".&#39; $_POST: &#39;.print_r($_POST, true)." | ".$_SERVER[&#39;REMOTE_ADDR&#39;]."n"); //išsaugome žinute faile.
} else {
    echo "žinute netikra."; //i faila kreipesi ne mokejimai.lt serveris, todel nieko daryti nereikia.
}
?>

--- Baigti kodą ---

Truputi pakoregavau tavo koda :D tikiuosi veiks ;)
Sori uz klaidas , rasiau su suzeistu pirstu :D

EDIT: Dar man atrodo yra kitoks budas : sudet zinutes i masyva ir jas su f-ja shuffle();  sumaisyti , bet dar man neteko naudoti sios f-jos ir todel nerasiau kaip su ja , nes nezinau ar veiks :D

m1tch5:
Neveikia kažkodėl. Testuojant mokėjimai.lt puslapyje atsiunčia tuščia žinutę. Siunčiant sms gaunu atsakyma savo sms.php failiuko adresą.
Štai galutinis kodas:

--- Kodas: ---<?php

    if ( goodRequest() ){ //patikriname ar žinute gauta iš reikiamo serverio.
        $zinutes = array("zinute1","zinute2","zinute3","zinute4"); //Sudedame zinutes i masyva
        $kiek = count($zinutes); //Suskaiciuojame zinutes
        $rand = mt_rand($kiek); //Padarome atsitiktini skaiciu
        echo  $zinutes[$rand];
    AddToLog("n".date("r")." |n".&#39; $_GET: &#39;.print_r($_GET, true)." |n".&#39; $_POST: &#39;.print_r($_POST, true)." | ".$_SERVER[&#39;REMOTE_ADDR&#39;]."n"); //išsaugome žinute faile.
} else {
    echo "žinute netikra."; //i faila kreipesi ne mokejimai.lt serveris, todel nieko daryti nereikia.
}
 
 
function AddToLog($str){ //funkcija sauganti gautas SMS žinutes i faila.
        $fh = @fopen("sms_log.txt", &#39;a&#39;); //sms_log.txt turi buti su irašymo i ji teisemis.
        @fwrite($fh, date(&#39;r&#39;)."nt".$str."n");
        @fclose($fh);
}


   function goodRequest(){
$_SS2 = "";
        $pKeyP = base64_decode("LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlETHpDQ0FwaWdBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCdE1Rc3dDUVlEVlFRR0V3Sk1WREVRDQpNQTRHQTFVRUJ4TUhWbWxzYm1sMWN6RWZNQjBHQTFVRUNoTVdSVlpRSUVsdWRHVnlibUYwYVc5dVlXd3NJRlZCDQpRakVQTUEwR0ExVUVBeE1HWlhad0xteDBNUm93R0FZSktvWklodmNOQVFrQkZndHBibVp2UUdWMmNDNXNkREFlDQpGdzB3T0RBM01ESXhNVFExTURWYUZ3MHdPVEEzTURJeE1UUTFNRFZhTUdVeEN6QUpCZ05WQkFZVEFreFVNUjh3DQpIUVlEVlFRS0V4WkZWbEFnU1c1MFpYSnVZWFJwYjI1aGJDd2dWVUZDTVJrd0Z3WURWUVFERXhCM2QzY3VkMlZpDQpkRzl3WVhrdVkyOXRNUm93R0FZSktvWklodmNOQVFrQkZndHBibVp2UUdWMmNDNXNkRENCbnpBTkJna3Foa2lHDQo5dzBCQVFFRkFBT0JqUUF3Z1lrQ2dZRUF4bEh5T3Z0THgxOVZDUCtaa1hkc0dYS3BGZzVnalc4V1d4UFh5MVlJDQpBTkxaZlhOYkpzRWRzbEUxeDBUdkRMVUU4WUxTaXRVaE9OSDRmVDBCdWVDM3ArRUlkZFdSK01VQ0tEcks0UzFDDQp2VWxta3JoMFU3dkg1OWZLbDc1Q09CR1ArUG9wZjBoamEvNnFpZUpWaHBqQ1VGa0ZCRHpwVjNjMzQyQm9aYWd5DQphVHNDQXdFQUFhT0I1akNCNHpBSkJnTlZIUk1FQWpBQU1Dd0dDV0NHU0FHRytFSUJEUVFmRmgxUGNHVnVVMU5NDQpJRWRsYm1WeVlYUmxaQ0JEWlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdRVXlUWnBWY3JiVEllVjI2SkpoMkhZDQoxZlp4WUVBd2dZZ0dBMVVkSXdTQmdEQitvWEdrYnpCdE1Rc3dDUVlEVlFRR0V3Sk1WREVRTUE0R0ExVUVCeE1IDQpWbWxzYm1sMWN6RWZNQjBHQTFVRUNoTVdSVlpRSUVsdWRHVnlibUYwYVc5dVlXd3NJRlZCUWpFUE1BMEdBMVVFDQpBeE1HWlhad0xteDBNUm93R0FZSktvWklodmNOQVFrQkZndHBibVp2UUdWMmNDNXNkSUlKQU1nODM2c2cwWVltDQpNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0R0JBRGY1MVlzOWVrQVlNdFZnS3NFMlFaWjhueDZUWnRTejFNN1ZYQ282DQp2U2hLWkI0TlRIM1AyRDNVaG42Y0hLZXMwVGJTWlZWQ2hsRE1ON2MwVjAzQUpXdzJrQlhram5iQTRLeDJxeUlJDQo4R1dlVW1CdmdHYVR4cmZnZXh2TXExN0NEVmVrbUE5ekJoK09FMVZ3THdrVUZmNStSMTRDQ1g4anhFdmRYcU1WDQpLL0dqDQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t");
        $pKey = openssl_pkey_get_public($pKeyP);
        if(!$pKey) return false;
        foreach($_GET As $key => $value) if($key!=&#39;_ss2&#39;) $_SS2 .= "{$value}|";
        $ok = openssl_verify($_SS2, base64_decode($_GET[&#39;_ss2&#39;]), $pKey);
        return ($ok === 1);
    }
?>
--- Baigti kodą ---
Bandžiau kažka tai su shuffle(); .. bet tikriausiai prisvaigau ;D
Kodo dalis:

--- Kodas: ---<?php

    if ( goodRequest() ){ //patikriname ar žinute gauta iš reikiamo serverio.
$masyvas = array("Zinute1","Zinute2","Zinute3","Zinute4");
$kiek = count($masyvas);
$shufflas = shuffle($kiek);
echo $shufflas[$masyvas];
    AddToLog("n".date("r")." |n".&#39; $_GET: &#39;.print_r($_GET, true)." |n".&#39; $_POST: &#39;.print_r($_POST, true)." | ".$_SERVER[&#39;REMOTE_ADDR&#39;]."n"); //išsaugome žinute faile.
} else {
    echo "žinute netikra."; //i faila kreipesi ne mokejimai.lt serveris, todel nieko daryti nereikia.

?>
--- Baigti kodą ---

Veliau dar šitaip bandžiau.:

--- Kodas: ---<?php
  if ( goodRequest() ){ //patikriname ar žinute gauta iš reikiamo serverio.
$zinute[0] = "test4";
$zinute[1] = "test3";
$zinute[2] = "test2";
$zinute[3] = "test1";
$kiek=count($zinute);
$rand=mt_rand($kiek);
echo $kiek[$zinute];
    AddToLog("n".date("r")." |n".&#39; $_GET: &#39;.print_r($_GET, true)." |n".&#39; $_POST: &#39;.print_r($_POST, true)." | ".$_SERVER[&#39;REMOTE_ADDR&#39;]."n"); //išsaugome žinute faile.
} else {
    echo "žinute netikra."; //i faila kreipesi ne mokejimai.lt serveris, todel nieko daryti nereikia.
}
--- Baigti kodą ---

Labai nesmerkit, kadangi apie php nieko nežinau :).

Haris:
Tikriausiai zinau tavo problemą .
Tu pamirsai irequirinti configa. ir todel jis neranda goodrequest() f-jos , ir nieko nedaro.
o tu nusistates mokejimai.lt puslapije i kur tau sius uzklausa? jei ne nurodyk urla iki sms.php failo.
ir dar .. tu testuok taip ta sms.php
ieik i sms.php faila ir url laukelije suvesk toki adresa :

http://www.jusupuslapis.lt/sms.php? sms=RAKTAS+zinute&to=1371&from=37065255255&operator=bite&amount=300
&currency=LTL&id=11111&transaction=831f9d6cb326408690c4ac0d69f307e5&
transaction2=6fgfvmf406e061dc371e143gh &_ss1=m557nkfr87556c4406e061dc3757th8h8 &_ss2
=3e451674c4885ty687y6ythyhg9hghvure5

sms- raktazodis
to - trumpas nr
from - numeris is ko gavai
o po id ten viskas susije su apsauga... :D


sita pabandyk :


--- Kodas: ---<?php
require_once"sms_config.php"; // vietoj sms_config ivesk konfigo pavadinima kos pas tave yra .
    if ( goodRequest() ){ //patikriname ar žinute gauta iš reikiamo serverio.
        $zinutes = array("zinute1","zinute2","zinute3","zinute4"); //Sudedame zinutes i masyva
        $kiek = count($zinutes); //Suskaiciuojame zinutes
        $rand = mt_rand($kiek); //Padarome atsitiktini skaiciu
        echo  $zinutes[$rand];
    AddToLog("n".date("r")." |n".&#39; $_GET: &#39;.print_r($_GET, true)." |n".&#39; $_POST: &#39;.print_r($_POST, true)." | ".$_SERVER[&#39;REMOTE_ADDR&#39;]."n"); //išsaugome žinute faile.
} else {
    echo "žinute netikra."; //i faila kreipesi ne mokejimai.lt serveris, todel nieko daryti nereikia.
}
?>

--- Baigti kodą ---

Haris:
su shuffle butu taip man atrodo :

--- Kodas: ---<?php

$zinutes = array("zinute1","zinute2","zinute3","zinute4");
echo shuffle($zinutes) ;

?>

--- Baigti kodą ---

Navigacija

[0] Žinučių sąrašas

[#] Sekantis puslapis

Eiti į pilną versiją