Autorius Tema: sms.php random funkcija  (Skaityta 6035 kartus)

Neprisijungęs m1tch5

  • Naujokas
  • *
  • Įrašai: 10
  • Karma: +0/-0
    • Žiūrėti profilį
sms.php random funkcija
« Įrašytas: 2009-07-02 18:20:31 pm »
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:
<?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($fhdate(&#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($_SS2base64_decode($_GET[&#39;_ss2&#39;]), $pKey);
        
return ($ok === 1);
    }
?>

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:
<?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.
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 :).
www.victorlava.com. HTML5, jQuery, canvas experiments at www.victorlava.com/lab.html

Neprisijungęs Haris

  • Dalyvis
  • **
  • Įrašai: 833
  • Karma: +56/-0
    • Žiūrėti profilį
    • www.RubikoKubas.Lt
Re: sms.php random funkcija
« Atsakymas #1 Įrašytas: 2009-07-03 00:54:24 am »
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
<?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.
}
?>


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
« Paskutinį kartą keitė: 2009-07-03 00:57:53 am sukūrė Haris »

Neprisijungęs m1tch5

  • Naujokas
  • *
  • Įrašai: 10
  • Karma: +0/-0
    • Žiūrėti profilį
Re: sms.php random funkcija
« Atsakymas #2 Įrašytas: 2009-07-03 12:52:17 pm »
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:
<?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($fhdate(&#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($_SS2base64_decode($_GET[&#39;_ss2&#39;]), $pKey);
        
return ($ok === 1);
    }
?>
Bandžiau kažka tai su shuffle(); .. bet tikriausiai prisvaigau ;D
Kodo dalis:
<?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.

?>

Veliau dar šitaip bandžiau.:
<?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.
}

Labai nesmerkit, kadangi apie php nieko nežinau :).
« Paskutinį kartą keitė: 2009-07-03 13:09:01 pm sukūrė m1tch5 »
www.victorlava.com. HTML5, jQuery, canvas experiments at www.victorlava.com/lab.html

Neprisijungęs Haris

  • Dalyvis
  • **
  • Įrašai: 833
  • Karma: +56/-0
    • Žiūrėti profilį
    • www.RubikoKubas.Lt
Re: sms.php random funkcija
« Atsakymas #3 Įrašytas: 2009-07-03 13:44:11 pm »
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 :

<?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.
}
?>


Manualai.lt Forumas

Re: sms.php random funkcija
« Atsakymas #3 Įrašytas: 2009-07-03 13:44:11 pm »

Neprisijungęs Haris

  • Dalyvis
  • **
  • Įrašai: 833
  • Karma: +56/-0
    • Žiūrėti profilį
    • www.RubikoKubas.Lt
Re: sms.php random funkcija
« Atsakymas #4 Įrašytas: 2009-07-03 13:46:20 pm »
su shuffle butu taip man atrodo :
<?php

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

?>


Neprisijungęs m1tch5

  • Naujokas
  • *
  • Įrašai: 10
  • Karma: +0/-0
    • Žiūrėti profilį
Re: sms.php random funkcija
« Atsakymas #5 Įrašytas: 2009-07-03 19:49:17 pm »
Nu nezinau niekas neina... Nieko nerašo ir tiek. Beja viska esu ten nusistatęs. 
O su shuffle funkcija parašo skaičių "1". Ir viskas. O iš kur ta vieną pajema taip ir nedakirtau.

Edit: Va tokią klaidą radau.
Fatal error: Call to undefined function goodRequest() in /home/mitch/cabal.kar.lt/sms_sistema/sms_get.php on line 4
Edit2: susitvarkiau, bet vistiek nieko nerašo ;/.

P.s su viena sms viskas veikia puikiai:), bet su masyvu ir tentais neina.

Edit3: Lyg ir susitvarkiau, štai kodas gal kam pravers :) :
<?php 
$textfile 
="random.txt";
$items file("$textfile");
$item rand(0sizeof($items)-1);
echo 
$items[$item];
?>

Visus tekstus rašyti į random.txt failiuką.
« Paskutinį kartą keitė: 2009-07-03 20:27:06 pm sukūrė m1tch5 »
www.victorlava.com. HTML5, jQuery, canvas experiments at www.victorlava.com/lab.html

Neprisijungęs Haris

  • Dalyvis
  • **
  • Įrašai: 833
  • Karma: +56/-0
    • Žiūrėti profilį
    • www.RubikoKubas.Lt
Re: sms.php random funkcija
« Atsakymas #6 Įrašytas: 2009-07-03 20:45:34 pm »
nu jau labai primityviai pasidarei , bet nieko tokio :D

Išdalies buvo mano kaltė , nes aš blogai mt_rand(); f-ja parasiau, pamiršau viena parametrą. :DDDD :P
va kaip turetu buti:
(kodo fragmentas)
$zinutes = array("zinute1","zinute2","zinute3","zinute4"); //Sudedame zinutes i masyva
        $kiek = count($zinutes); //Suskaiciuojame zinutes
        $rand = mt_rand($kiek,1); //Padarome atsitiktini skaiciu
        echo  $zinutes[$rand];

EDIT: Aš tai turiu pasidaręs kiek kitaip visą sistemą , štai pastudijuok mano variantą  (prisegiau file'a)
« Paskutinį kartą keitė: 2009-07-03 20:49:21 pm sukūrė Haris »

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 895
  • Karma: +59/-2
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Re: sms.php random funkcija
« Atsakymas #7 Įrašytas: 2009-07-05 22:13:21 pm »
pavarot ;)))

Neprisijungęs m1tch5

  • Naujokas
  • *
  • Įrašai: 10
  • Karma: +0/-0
    • Žiūrėti profilį
Re: sms.php random funkcija
« Atsakymas #8 Įrašytas: 2009-07-08 16:52:56 pm »
Neblogai tu ten pasidaręs :)

Beja, ačiū už pagalbą.
www.victorlava.com. HTML5, jQuery, canvas experiments at www.victorlava.com/lab.html

Neprisijungęs Mantez

  • Naujokas
  • *
  • Įrašai: 3
  • Karma: +0/-0
    • Žiūrėti profilį
Re: sms.php random funkcija
« Atsakymas #9 Įrašytas: 2009-11-22 15:24:04 pm »
Dėkui  ;)

Neprisijungęs Haris

  • Dalyvis
  • **
  • Įrašai: 833
  • Karma: +56/-0
    • Žiūrėti profilį
    • www.RubikoKubas.Lt
Re: sms.php random funkcija
« Atsakymas #10 Įrašytas: 2009-11-22 18:27:57 pm »
Sugalvojau apsauga , kad piktadariai suzinoje jusu pvz. sms.php faila kur jis yra nepakenktu.
Kaip sukuriat  nauja raktazodi ir nurodot adresa , tai adreso gale dadėkit pvz ?kasnors=slapta.
atrodytu taip
http://manoadresas.lt?id=slaptas_zodis
o jusu sms.php(ar koki jus naudojate) rasykite taip:
<?php
if($_GET[&#39;id&#39;] == "slaptas_zodis"){
/*jusu visi duomenu irasymai ir visa kita*/
echo"žinutė gauta";
}else{
/*Pranasimas kenkejui*/
echo"Ko nori?!";
/*Siunciam i pradini puslapi*/
header("Location:index.php"); 
}
?>


Kenkėjas jungsis i jusu sms.php faila su uzklausom
http://www.jusupuslapis.lt/sms.php?sms=RAKTAS+zinute&to=1371&from=37065255255&operator=bite&amount=300
&currency=LTL
Bet joje nera ?id=slaptas_zodis , taigi kenkejas bus perkeltas i index.php :)

O jeigu ateis uzklausa is sms atsiskaitimu tiekejo tai jie duos uzklausa
http://www.jusupuslapis.lt/sms.php?id=slaptas_zodis&sms=RAKTAS+zinute&to=1371&from=37065255255&operator=bite&amount=300
&currency=LTL
ir viskas bus ok :)

id ir slaptas_zodis gali buti betkokie tik jeigu keisite id tai ir pakeiskite is  $_GET['id'] i $_GET['kasnors']

Yra klausimu? :) ;D

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 895
  • Karma: +59/-2
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Re: sms.php random funkcija
« Atsakymas #11 Įrašytas: 2009-11-23 15:01:16 pm »
Hari, dviratį išradai :D Be to, header'iai turi būti siunčiami prieš bet kokį IO išeities tekstą. Tavo atvėju yra echo "ko nori?", ir po to eina header'is. Taip neteisinga kaip minimum, ir prie to dar nelogiška. Kam išvesti tą pranešimą, jeigu tu iškarto siunti header'i su location pasikeitimu?

Manualai.lt Forumas

Re: sms.php random funkcija
« Atsakymas #11 Įrašytas: 2009-11-23 15:01:16 pm »