Puslapiai: [1]   Į apačią

Autorius Tema: sms.php random funkcija  (Skaityti 387 kartai)

m1tch5

  • Forumo naujokas
  • Karma: +0/-0
  • Atsijungęs
  • Žinutės: 10
sms.php random funkcija
« : Liepos 02, 2009, 06:20:31 »
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".' $_GET: '.print_r($_GETtrue)." |n".' $_POST: '.print_r($_POSTtrue)." | ".$_SERVER['REMOTE_ADDR']."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"'a'); //sms_log.txt turi buti su irašymo i ji teisemis.
        
@fwrite($fhdate('r')."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!='_ss2'$_SS2 .= "|";
        
$ok openssl_verify($_SS2base64_decode($_GET['_ss2']), $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".' $_GET: '.print_r($_GETtrue)." |n".' $_POST: '.print_r($_POSTtrue)." | ".$_SERVER['REMOTE_ADDR']."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 :).
Prisijungęs

Haris

  • Kietas forumietis
  • Karma: +6/-0
  • Atsijungęs
  • Žinutės: 182
  • :)
Re: sms.php random funkcija
« Atsakyti #1 : Liepos 03, 2009, 12:54:24 »
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".' $_GET: '.print_r($_GETtrue)." |n".' $_POST: '.print_r($_POSTtrue)." | ".$_SERVER['REMOTE_ADDR']."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
« Paskutinis taisymas: Liepos 03, 2009, 12:57:53 nuo Haris »
Prisijungęs

m1tch5

  • Forumo naujokas
  • Karma: +0/-0
  • Atsijungęs
  • Žinutės: 10
Re: sms.php random funkcija
« Atsakyti #2 : Liepos 03, 2009, 12:52:17 »
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".' $_GET: '.print_r($_GETtrue)." |n".' $_POST: '.print_r($_POSTtrue)." | ".$_SERVER['REMOTE_ADDR']."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"'a'); //sms_log.txt turi buti su irašymo i ji teisemis.
        
@fwrite($fhdate('r')."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!='_ss2'$_SS2 .= "{$value}|";
        
$ok openssl_verify($_SS2base64_decode($_GET['_ss2']), $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".' $_GET: '.print_r($_GETtrue)." |n".' $_POST: '.print_r($_POSTtrue)." | ".$_SERVER['REMOTE_ADDR']."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".' $_GET: '.print_r($_GETtrue)." |n".' $_POST: '.print_r($_POSTtrue)." | ".$_SERVER['REMOTE_ADDR']."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 :).
« Paskutinis taisymas: Liepos 03, 2009, 01:09:01 nuo m1tch5 »
Prisijungęs

Haris

  • Kietas forumietis
  • Karma: +6/-0
  • Atsijungęs
  • Žinutės: 182
  • :)
Re: sms.php random funkcija
« Atsakyti #3 : Liepos 03, 2009, 01:44:11 »
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
¤cy=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".' $_GET: '.print_r($_GETtrue)." |n".' $_POST: '.print_r($_POSTtrue)." | ".$_SERVER['REMOTE_ADDR']."n"); //išsaugome žinute faile.
} else {
    echo 
"žinute netikra."//i faila kreipesi ne mokejimai.lt serveris, todel nieko daryti nereikia.
}
?>

Prisijungęs

Haris

  • Kietas forumietis
  • Karma: +6/-0
  • Atsijungęs
  • Žinutės: 182
  • :)
Re: sms.php random funkcija
« Atsakyti #4 : Liepos 03, 2009, 01:46:20 »
su shuffle butu taip man atrodo :
<?php

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

?>

Prisijungęs

m1tch5

  • Forumo naujokas
  • Karma: +0/-0
  • Atsijungęs
  • Žinutės: 10
Re: sms.php random funkcija
« Atsakyti #5 : Liepos 03, 2009, 07:49:17 »
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ą.
« Paskutinis taisymas: Liepos 03, 2009, 08:27:06 nuo m1tch5 »
Prisijungęs

Haris

  • Kietas forumietis
  • Karma: +6/-0
  • Atsijungęs
  • Žinutės: 182
  • :)
Re: sms.php random funkcija
« Atsakyti #6 : Liepos 03, 2009, 08:45:34 »
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)
« Paskutinis taisymas: Liepos 03, 2009, 08:49:21 nuo Haris »
Prisijungęs

vitalikaz

  • Apsistojęs forume narys
  • Karma: +1/-0
  • Atsijungęs
  • Žinutės: 59
Re: sms.php random funkcija
« Atsakyti #7 : Liepos 05, 2009, 10:13:21 »
pavarot ;)))
Prisijungęs

m1tch5

  • Forumo naujokas
  • Karma: +0/-0
  • Atsijungęs
  • Žinutės: 10
Re: sms.php random funkcija
« Atsakyti #8 : Liepos 08, 2009, 04:52:56 »
Neblogai tu ten pasidaręs :)

Beja, ačiū už pagalbą.
Prisijungęs

Mantez

  • Forumo naujokas
  • Karma: +0/-0
  • Atsijungęs
  • Žinutės: 1
Re: sms.php random funkcija
« Atsakyti #9 : Lapkričio 22, 2009, 03:24:04 »
Dėkui  ;)
Prisijungęs

Haris

  • Kietas forumietis
  • Karma: +6/-0
  • Atsijungęs
  • Žinutės: 182
  • :)
Re: sms.php random funkcija
« Atsakyti #10 : Lapkričio 22, 2009, 06:27:57 »
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['id'] == "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
¤cy=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
¤cy=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
Prisijungęs

vitalikaz

  • Apsistojęs forume narys
  • Karma: +1/-0
  • Atsijungęs
  • Žinutės: 59
Re: sms.php random funkcija
« Atsakyti #11 : Lapkričio 23, 2009, 03:01:16 »
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?
Prisijungęs
Puslapiai: [1]   Į viršų
 

Hey.lt - Nemokamas lankytojų skaitliukas