|
Yazan
|
Konu: lanet oturum nedir ve nasil kontrol edilir? (Okunma Sayısı 368 defa)
|
SniperScope
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 5
|
Oncelikle sunu belirtmek isitoyrumki; hayatimda php nin session muhabbeti kadar lanet duzeyde zor birseyle karsilasmadim. Yaklasik 10 gun dur butun interneti arayip taradim ama elde olan session_start() session_register() ... vs. heryerde hep ayni basma kalip muhabbet, once session_start yap sonra session_register yap is tamam. Arkadaslar bu oturum illetini adam akilli anlatacak biri yokmu ? 1 - oturum degeri nasil diger sayfalara tasinir ? 2 - oturum degiskenlerini kullanici giris yapmissa veri tabaninda kayitli olan kullanici adi ve sifre nasil atanir ? 3 - neden browseri kapatip actigim halde kullanici paneline giris yapabiliyorum ? 4 - neden session_destroy yaptigim halde sifre degistirme bolumune girebiliyorum ? 5 - <?php $randomsessionid=md5(microtime()); session_register("randomsessionid"); ?> ile urettigim rastgele sayiyiyi veri tabanina nasil kayit ettirebilirim ? 6 - neden baska bir kullanici adi ile giris yaptigim halde sayfanin kodlari uzerinde halen ve israrla eski girilen isim gorunuyor? Daha onlarca NEDEN ile baslayan sorum var. Lutfen bilen birileri anlatabilirmi.
|
|
|
|
« Son Düzenleme: 09, 2008, 09:31:21 am Gönderen: SniperScope »
|
Logged
|
|
|
|
SniperScope
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 5
|
diger bir sorum; kullanici yeni kayit olurken, veri tabanindaki User_Id tablosuna bakip en yuksek rakami bulup buna bir ekleyip o sekilde kayit ettirmek istiyorum nasil yapabilirm ?  ornegim suan siteye 100 kisi kayitli, yeni kayit olacak kisi 101. kisi olacak. Yani c=100; c++; tesekkurler.
|
|
|
|
|
Logged
|
|
|
|
|
bndrs
|
Selam, Session sunucuda doya oluşturup değerleri o dosyaya yazıp değerlendirir zaten biliyorsun.
O dosyayıda session_id ile bilir ve bulur bütün karmaşa işte burada!
Ya cookie kullanıp bu session_id'yi hatırlar yada sen bütün linklerinde bu session_id'yi belirtmelisin.
Bu dandik durum için
1- session.use_cookies = Off (php.ini parametresi) 2- session.bug_compat_42 = On 3 Linklerin tümünde ssion_id belirtilecek. php.ini'de session_name = "PHPSESSID" genelde ./xx.php?PHPSESSID=asda4d43a2a2s324dsd gibi
|
|
|
|
|
Logged
|
|
|
|
|
kertenkele
|
diger bir sorum; kullanici yeni kayit olurken, veri tabanindaki User_Id tablosuna bakip en yuksek rakami bulup buna bir ekleyip o sekilde kayit ettirmek istiyorum nasil yapabilirm ?  ornegim suan siteye 100 kisi kayitli, yeni kayit olacak kisi 101. kisi olacak. Yani c=100; c++; tesekkurler. insert sorgusunda id sutununa işlenecek değeri boş bırakırsanız veya INSER INTO uyeler (id,user) VALUE ('','$uye') şeklinde yaparsanız son idyi kendisi alır.
|
|
|
|
|
Logged
|
|
|
|
bendeseni
Arya Emini
PHP Stajyeri

Offline
Mesaj Sayısı: 218
Şebnem Ferah Fanatiği
|
Şayet gerekli bölüm auto_increment ise öyle olur. Auto_increment değilse SniperScope dediğin şey mümkün. Şayet değilse en basite indirgenmişi böyle olur. $SonUyeSor = mysql_query("SELECT MAX(User_id) AS EnBuyuk FROM uyeler_tablosu"); $SonUye = mysql_result($SonUyeSor,0,'EnBuyuk'); $SiradakiUye = SonUye + 1; Bu arada hoşgeldin uurcum.
|
|
|
|
|
Logged
|
|
|
|
|
kertenkele
|
Hoşbulduk Aryacım. ID bölümünün Auto_increment olduğunu varsayarak söyledim tabi. 
|
|
|
|
|
Logged
|
|
|
|
|
mumincelik
|
Bu kadar karmasik olan birsey yok;
session kullanmak istedigin her sayfanin basina session_start() koyarsan mevcut oturumda yani kullanicinin tarayicisinda her sayfada tanitilan session gecerli olur. onemli olan her sayfanin basinda session_start olmasi, olmazsa session o sayfa icinde kullanilamaz.
Session belirlemek icin ozel birsey yamana gerek yok $_SESSION['isim'] = 'deger' seklinde session atayabilirsin ve ayni sekilde echo $_SESSION['isim'] seklinde istedigin sayfada kullanabilirsin. bunun icin cookie yada url uzerinde aktarma yapmana gerek yok. ama dedigim gibi en tepede session_start olmasi gerek.
session i bosaltmak icinde destroy yerine unset($_SESSION['isim']) seklinde kullanirsan bu session kulanilmaz hale gelir. Belirttigin diger seyler icinde sayfaya kontrol koyman gerek ornegin login sayfasini gostermek istemiyorsan session i kontrol ettir dolu ise gosterme bos ise goster. Eger buna ragmen dedigin erisim hatalarini aliyorsan kontrollerinde sorun vardir.
Databse e artar sekilde veri gormek icin otomatik attirmali primary key tanimlaman gerekir, veri girmek ise normal degisken ile nasil giriyorsan aynidir, degisken olarak gene $_SESSION['isim'] kullanacaksin.
En basit kullanimi boyledir yani
|
|
|
|
|
Logged
|
|
|
|
|
mahirix
|
Bi örnek yazacagım kendi sistemlerimin birinde kullandıgım oturum kontrolü basite indirip yazıyorum faydalı olur inş. Kullanıcınuın giriş yaptıgı kodlar; <?php $username = $_POST["username"]; $password = $_POST["password"]; if(!$username or !$password) die("Lütfen Tüm Alanları Doldurunuz");
$result = @mysql_query("select id, username, password from admin where username='$username'"); if(@mysql_num_rows($result) < 1) die("Böyle Bir Kullanıcı Yoktur"); list($userid, $user, $userpass)=@mysql_fetch_row($result); $password = codepass($password); if($username == $user){ if($password == $userpass){ global $sites_cookie; $data = base64_encode("$userid;$user;$userpass"); $_SESSION[$sites_cookie] = $data; $url = $_SERVER['HTTP_REFERER']; echo '<p align=center><br /><b>'.$username.'</b> Başarıyla Giriş Yaptınız.<br /><br /> <a href="'.$url.'">Sayfa Yönlendirilmiyorsa Tıklayınız</a> </p>'; gotourl("3", $url); } else { die("Şifreniz Yanlıştır"); } } else { die("Böyle Bir Kullanıcı Yoktur"); } ?>
Kullanıcı girişi onaylanınca kullanıcı id, adı be şifresi site cokie adında sessiona base64 şifrelenip koyulur burda işlem bu.. kullanıcının kontrolünüde su fonksiyonla saglıorum; <?php function user(){ global $sites_cookie; $data = $_SESSION[$sites_cookie]; if(!$data) return false; $data = base64_decode("$data"); list($userid, $username, $userpass) = explode(";", $data); $result = @mysql_query("select id, username, password from "._MX."admin where id='$userid'"); if(@mysql_num_rows($result) > 0){ list($sqlid, $sqlname, $sqlpass)=@mysql_fetch_row($result); if($username == $sqlname and $userpass == $sqlpass){ return true; } else { return false; } } else { return false; } } ?>
Sonrası ise çok basit ; if(user()){ // Kullanıcı kodları } else { // ziyaretçi kodları }
fonksiyonu istediğin sayfaya çagırıp istediğin gibi kullanabilirsin.. Haa unutmadan sayfaların hepsinin başında session_start(); war 
|
|
|
|
|
Logged
|
|
|
|
SniperScope
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 5
|
Arkadaslar hepinize yardimlarinizdan dolayi cok tesekkur ederim. Sonunda hem session isleyisini anlamaya hemde hali hazirdaki sorunumu cozmeye basladim.
Saygilarimla
|
|
|
|
|
Logged
|
|
|
|
Portsentry
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 6
|
sıra takibi için ufak bi fonksiyon la bu işi halledebilirsin. Kolay Gelsin mysql_connet(***,***,***) mysql_select_db(DATABASE)
$ilkdeger=1;
$sira_no=islem_no($deger);
echo ("$sira_no");
function Islem_no($Islem_No_Kontrol) {
$Islem_No_Kontrol =@mysql_query("Select * from TABLO_ADI order by SUTUN_ADI desc"); $Islem_No_array =mysql_fetch_array($Islem_No_Kontrol); $Islem_No =++$Islem_No_array[0]; }
|
|
|
|
|
Logged
|
|
|
|
|
 |