• 29-08-2014, 14:36:07
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    arkadaşlar php'nin mt_rand() fonksiyonuyla 3 haneli karma sayı oluşturup mevcut bir string'in sonuna bu oluşturuğum sayıyı eklemek istiyorum aşağıdaki gibi;


    $num=mt_rand(100,999);
    
    $PHPSESSiD="9a3a6a71567b5fa92e6457f55678c39c".$num;
    
    echo $PHPSESSiD; //sonuç 9a3a6a71567b5fa92e6457f55678c39c529
    diyelim yukarıdaki kodlamada $num değişkeninde oluşan random sayının içerisinde o an 529 var ve oluşan random sayı yukardaki gibi string sonuna eklendi ve echo yaptığımda çıkan sonuç aşağıdaki gibi gözüküyor:
    9a3a6a71567b5fa92e6457f55678c39c529


    Ben bu yukarıdaki sonucu aşağıdaki şekilde doğrudan değişkenin içine(yani tırnak işaretleri arasına) yazıp tanımladığımda, üzerinde çalıştığım script sorunsuz çalışıyorken, yukarıda kodlamadaki gibi rand() fonksiyonuyla yaptığımda ne yazık ki çalışmıyor!(php hatası vs vermiyor sunucuya post işlemi yapıldığında, sunucu bu id'yi tanımıyor halbuki aşağıdaki kodlamadaki gibi tırnak arasına manuel yazdığımda veriyi tanıyor)
    Ve ayrıca echo yaptığımda çıktılar birebir aynı!
    $PHPSESSiD="9a3a6a71567b5fa92e6457f55678c39c529";
    echo $PHPSESSiD; //sonuç 9a3a6a71567b5fa92e6457f55678c39c529
    NOT: değişken tipini string, float, integer, null ne varsa ayarlayıp denedim sonuç yine değişmedi...
    ayrıca uniqueid(), rand() vb diğer tüm fonksiyonlarla da denedim yine sonuç değişmedi.

    ÖZET;
    $num =mt_rand(100,999);
    diyelim $num içinde o an 956 sayısı oluştu...

    $PHPSESSiD="9a3a6a71567b5fa92e6457f55678c39c956"; gibi elle kendim yazınca sorun yok,
    ama
    $PHPSESSiD="9a3a6a71567b5fa92e6457f55678c39c$num"; olunca çalışmıyor anasını satim kafayı yememek elde değil yeminlen

    halbuki echo $PHPSESSiD; yaptığımda her ikisinde de çıkan sonuçlar tamamen aynı!
  • 29-08-2014, 18:03:11
    #2
    burhangullu adlı üyeden alıntı: mesajı görüntüle
    arkadaşlar php'nin mt_rand() fonksiyonuyla 3 haneli karma sayı oluşturup mevcut bir string'in sonuna bu oluşturuğum sayıyı eklemek istiyorum aşağıdaki gibi;


    $num=mt_rand(100,999);
    
    $PHPSESSiD="9a3a6a71567b5fa92e6457f55678c39c".$num;
    diyelim oluşan random sayının içerisinde 529 var ve oluşan random sayı yukardaki gibi string sonuna eklendi.


    Ancak ne hikmettir bir türlü sebebini anlayamadım aşağıdaki aynı sonucu veren kodlar yaptığım scriptte %100 hatasız çalışıyorken gel gelelim yukarıda random fonksyion işin içine girdiğinde çalışmıyor ve hata veriyor!
    Halbuki echo yaptığımda çıktılar birebir aynı!
    $PHPSESSiD="9a3a6a71567b5fa92e6457f55678c39c"."529";
    NOT: değişken tipini string, float, num, null ne varsa ayarlayıp denedim sonuç yine değişmedi...
    ayrıca uniqueid(), rand() vb diğer tüm fonksiyonlarla da denedim yine sonuç değişmedi.
    Merhaba,
    Siz konuya hakim olduğunuz için size anlaşılır gelebilir ama benim gibi diğer arkadaşlar da problemi anlamadı sanırım. Size yardımcı olabilmemiz için, biraz daha açıklar mısınız lütfen ?
  • 29-08-2014, 19:41:27
    #3
    Açıkçası bende net kavrayamadım sorunu ama
    <?php
    
    $num=rand(100,999); 
    
    $PHPSESSiD="9a3a6a71567b5fa92e6457f55678c39c".$num; 
    
    echo $PHPSESSiD; //sonuç 9a3a6a71567b5fa92e6457f55678c39c529
    Bu kodda çalışıyor yani?
  • 29-08-2014, 19:48:10
    #4
    LORDD adlı üyeden alıntı: mesajı görüntüle
    Merhaba,
    Siz konuya hakim olduğunuz için size anlaşılır gelebilir ama benim gibi diğer arkadaşlar da problemi anlamadı sanırım. Size yardımcı olabilmemiz için, biraz daha açıklar mısınız lütfen ?
    Hocam ilginiz için teşekkürler. sorumda bazı düzenlemeler eklemeler yaptım bir daha okuyun isterseniz.

    Olayı kısaca özetliyim;
    Yukarıda belirttiğim 2 ayrı kodlamada mantık tamamen aynı.
    sadece ilk kutudaki kodlamada son 3 haneli rakam rand() fonksiyonu yardımıyla karıştırılıp üretilerek $PHPSESSiD değişkeninin sonuna ekleniyor(benzersiz bir sessionid oluşturulmaya çalışılıyor).
    Diğer altta yer alan kodlamada ise "" işaretleri arasına yazdığım sabit değerli veri doğrudan değişkene atılıyor ve ilgili fonksiyona gönderilerek çağrılıyor.
    NOT: rand() lı olan kodlama, php hatası vs verdirtmiyor ancak scriptin çalışmamasına neden oluyor sorun bu.
    Her iki kodlamada echo $PHPSESSiD; yaptığımda, değişkenlerden çıkan sonuçlar tamamen aynı veri tipi ve aynı sonuç olmasına rağmen, rand() fonksiyonu kullanarak yaptığım kodlama, uğraştığım scriptin hata vermesine neden oluyor(php hatası vs vermiyor, script sunucuya post işlemi yaptığında rand() ile oluşturduğum session değerini TANIMIYOR).

    Kısaca, alttaki kodlamada tırnak işareti arasına doğrudan yazdığım sabit veriyi elle manuel değiştirince her hangi sorun yok, ama rand() kullanarak değişdirttiğimde, SessionID verisi, scripti sapıttırıyor. halbuki veri tipleri, echo yapıldığında çıkan sonuçlar tamamen aynı. çözemedim gitti...



    Sable adlı üyeden alıntı: mesajı görüntüle
    Açıkçası bende net kavrayamadım sorunu ama
    <?php
    
    $num=rand(100,999); 
    
    $PHPSESSiD="9a3a6a71567b5fa92e6457f55678c39c".$num; 
    
    echo $PHPSESSiD; //sonuç 9a3a6a71567b5fa92e6457f55678c39c529
    Bu kodda çalışıyor yani?
    Hayır hocam bu kodda değil, öteki kodda çalışıyor. bu koddaki çıkan sonucu öteki koda manuel eklediğimde problem olmadan çalışıyor ama rand()la ekleme yapınca çalışmıyor...
  • 30-08-2014, 01:28:33
    #5
    ana soruda mt_rand alttaki alıntılarda rand.
    ana sorunun en alt kısmında ;
    $PHPSESSiD="9a3a6a71567b5fa92e6457f55678c39c$num; olunca çalışmıyor anasını satim"
    yukarılarda .....".$num;

    burda ciddi bir karmaşa var. kodlarınızı olduğu gibi sırasıyla yapıştırırsanız belki daha rahat yardımcı olunur.

    ayrıca rand ile oluşturup ve elle yazarak ikisinin aynı verdiğini nasıl anladınız onu da anlayamadım. benim tahminim siz sayfaya girdiğinizde rand yeni üretiyor ve siz bi önceki üretileni test ediyorsunuz gibi.

    bazen insan yorulur ve böyle hatalar yapabilir. sadece tahmin. dediğim gibi kodları net görürsek daha iyi yardımcı olabiliriz belki.
  • 30-08-2014, 02:09:16
    #6
    şöyle dener misiniz?

    $num=mt_rand(100,999); 
    $PHPSESSiD = "9a3a6a71567b5fa92e6457f55678c39c" . strval($num);
  • 30-08-2014, 02:16:25
    #7
    9a3a6a71567b5fa92e6457f55678c39c314
    9a3a6a71567b5fa92e6457f55678c39c697
    9a3a6a71567b5fa92e6457f55678c39c467

    Kodda sorun yok ? Ben mi yanlış anladım yoksa ?

    $num=mt_rand(100,999); 
    $randeg="9a3a6a71567b5fa92e6457f55678c39c".$num; 
    echo $randeg;
  • 30-08-2014, 09:50:48
    #8
    bluexpres adlı üyeden alıntı: mesajı görüntüle
    ana soruda mt_rand alttaki alıntılarda rand.
    ana sorunun en alt kısmında ;
    $PHPSESSiD="9a3a6a71567b5fa92e6457f55678c39c$num; olunca çalışmıyor anasını satim"
    yukarılarda .....".$num;
    burda ciddi bir karmaşa var. kodlarınızı olduğu gibi sırasıyla yapıştırırsanız belki daha rahat yardımcı olunur.

    ayrıca rand ile oluşturup ve elle yazarak ikisinin aynı verdiğini nasıl anladınız onu da anlayamadım. benim tahminim siz sayfaya girdiğinizde rand yeni üretiyor ve siz bi önceki üretileni test ediyorsunuz gibi.

    bazen insan yorulur ve böyle hatalar yapabilir. sadece tahmin. dediğim gibi kodları net görürsek daha iyi yardımcı olabiliriz belki.
    Evet hocam aynen o şekilde test ediyordum(yoksa dediğiniz gibi o anki oluşan sayıyı tutturmak mümkün değil ). Bu arada problemi hallettim ufak bir mantık hatası yapmışım. K.bakmayın sizleri de uğraştırdım Hepinize ilginiz için çok tşk ediyorum.
    Sorun şu ki, yukarıdaki metodla sayı karıştırarak oluşturmaya çalıştığım sessid değerini, sunucuya CURL ile bir veri post ettğimde, karıştırtmamam yani veri post edilene kadar sabit bırakmam gerekiyormuş o yüzden elle manuel değiştirince sorun olmuyomuş çünkü post işlemi başlamadan önce ran() sayıyı değiştiriyor ve değişince de sunucudan gelen captcha güvenlik kodları benim girdiklerimle eşleşmiyordu bilmem anlatabildim mi : ).

    Bu problemi ise $_SESSION verisi oluşturarak çözdüm.
    önce rand() ile oluşturduğum değeri, eğer $_SESSION verisi daha önce oluşturulmamışsa içine kaydediyorum, sonraki ziyaretlerde $_SESSION içine kaydedilmiş değeri çekiyorum rand() devre dışı kalmış oluyor

    digiklan adlı üyeden alıntı: mesajı görüntüle
    şöyle dener misiniz?

    $num=mt_rand(100,999); 
    $PHPSESSiD = "9a3a6a71567b5fa92e6457f55678c39c" . strval($num);
    Hocam ilgin için çok teşekkürler sorunu hallettim sorun kodlamada vs değilmiş ran() ın boşa günahını aldım. sorunun çözümünü bir üstteki cevap veren arkadaşa anlattım

    xFactoria;
    1069527370 adlı üyeden alıntı:
    9a3a6a71567b5fa92e6457f55678c39c314
    9a3a6a71567b5fa92e6457f55678c39c697
    9a3a6a71567b5fa92e6457f55678c39c467

    Kodda sorun yok ? Ben mi yanlış anladım yoksa ?

    $num=mt_rand(100,999); 
    $randeg="9a3a6a71567b5fa92e6457f55678c39c".$num; 
    echo $randeg;
    Hocam ilgin için çok teşekkürler sorunu hallettim sorun kodlamada vs değilmiş ran() ın boşa günahını aldım. sorunun çözümünü bir üstteki cevap veren arkadaşa anlattım