Php Session Olayı. Yardım.
-
Evet arkadaşlar admin paneli hazırlıyorum php de. Asp bitti sırada Php öğrenmek kaldı :)
Kodlar aşağıdadır.
Login-kontrol.php
<?PHP
session_start();
include '../setting.php';
$hata=99;
$kadi=guvenlik($_POST['kadi']);
$pass=guvenlik($_POST['pass']);
if (empty($kadi) or empty($pass)){ $hata=1; }
if ($hata>1){
if ($kadi != $panel_kullanici_adi or $pass != $panel_parola){
$hata=2;
header ("location: login.html");
}
}
if ($hata>2){
$_SESSION['G5FGSA15AFS4ASFSA131SAF54645']="b.demirdelen";
$_SESSION['yetki']="$ver[yetki]";
header("location: index.php");
}
?>
İndex.php deki session yoksa yönlendirme kodu.
<?
session_start();
include '../setting.php';
if ($_SESSION['G5FGSA15AFS4ASFSA131SAF54645'] == ""){
header("location=login.html");
}
?>
Setting.php de vt bağlantısı ve admin kullanıcı adı ve şifresi vardır.
ini_set("display_error",0);
$panel_kullanici_adi = "xxxxx";
$panel_parola = "xxxxx";
Sorun : Ancak bu koda rağmen admin paneline girebiliyorum. Hata nerde acaba ?
-
bu nasıl bir kodlamadır :)) valla tebrik ederim seni bu kadar şeye ne gerek varki :)
ayar.php--> içeriği
$kulaniciadi = "erdem";
$sifresi="123456";
Giriş YApılacak İçerik sayfası,
global $kulaniciadi ,$sifresi;
$kadi=guvenlik($_POST['kadi']);
$pass=guvenlik($_POST['pass']);
if(($kadi=="") or ($pass=="")){
header ("location: index.php");
}elseif(($kulaniciadi==$kadi) and ($sifresi==$pass)){
$_SESSION['G5FGSA15AFS4ASFSA131SAF54645']="b.demirdelen";
$_SESSION['yetki']=$ver[yetki];
header ("location: admin.php");
}else{
echo "cık cık olmadı";
}
admin.php içeriği
Kolay gelsin.
-
yok hacım ya olmadı mına ki :S
<?
session_start();
include '../setting.php';
if ($_SESSION['G5FGSA15AFS4ASFSA131SAF54645'] == ""){
header("location=login.html");
}
?>
burada bi salaklık yaptığımı düşünüyorum ama ne yapıyorum :S
-
Hacı kodu denerken giriş yapmışsan session hala duruyor olabilir browserı kapatıp tekrar girmeyi dene.
-
eveet sorunu hallettim :)
ancak şöyle bir sorunum oldu şimdi :D
giriş yapamıyorum :D
sorunumu çözdüğüm kodu yazayım :)
<?
ob_start();
session_start();
include '../setting.php';
if ($_SESSION['OKOKDFASUYDGUYSAGDASDAS2356151231'] == ""){
header ("location: login.html");
}
?>
kalın yazılı olan zımbırtıyı eklediğimde sorun çözüldü ancak şimdi giriş yapamıyorum :D
<?PHP
session_start();
include '../setting.php';
$hata=99;
$kadi=guvenlik($_POST['kadi']);
$pass=guvenlik($_POST['pass']);
if (empty($kadi) or empty($pass)){ $hata=1; }
if ($hata>1){
if ($kadi != $panel_kullanici_adi or $pass != $panel_parola){
$hata=2;
header ("location: login.html");
}
}
if ($hata>2){
$_SESSION['OKOKDFASUYDGUYSAGDASDAS2356151231']="b.demirdelen";
$_SESSION['yetki']="$ver[yetki]";
header("location: index.php");
}
?>
buradaki hata ne diye düşünüyorum bulamadım bi türlü :S
setting.php içeriği :
$panel_kullanici_adi = "admin";
$panel_parola = "3140583";
-
sanırım phpden analayanlar henüz görmediler konuyu :D
-
interfector bunu yazdı:
-----------------------------yok hacım ya olmadı mına ki :S
<?
session_start();
include '../setting.php';
if ($_SESSION['G5FGSA15AFS4ASFSA131SAF54645'] == ""){
header("location=login.html");
}
?>
burada bi salaklık yaptığımı düşünüyorum ama ne yapıyorum :S
-----------------------------hocam header("location=login.html") yazmışssın ben ilk defa gördüm normalde header("location:login.html") şeklinde yazılmıyor mu ?
-
evet doğrusu header('location:url'); dir.
olması hayal edilen login dosyası:
<?php // standart başlangıç
include('global.php'); // session başlangıcını, oturum varsa veritabanı bağlantısını falan tek bi dosyada yapıp her yerde bunu include ettirebilirsiniz.
$hata = 0; // hata oluştukca değeri yükselcek. hata 0 dan büyükse "hata: x" diye yazı göstertcez.
if( $_POST ){ // eğer form gönderilmişse
if( !isset( $_POST['hesap-şifresi'] ) || empty( $_POST['hesap-şifresi'] ) ){ $hata = '2'; } // şifre hanesi oluşturulmamışsa veya boş bırakılmışsa.
if( !isset( $_POST['hesap-adı'] ) || empty( $_POST['hesap-adı'] ) ){ $hata = '1'; } // kullanıcı adı hanesi aynı şekilde (:
if( $hata == '0' ){ // hesap adı ve şifresi yazılmışsa
if( $veritabanındanokullanıcıadınaaitokunanşifre == $_POST['hesap-şifresi'] ){ // şifre doğruysa
$_SESSION['oturum'] = 'aktif';
$_SESSION['üye-id'] = $veritabanındanokullanıcıadınaaitautoincrementidsi;
$_SESSION['session-id'] = session_id();
mysql_güncelleme_kodu('son giriş = şuanki zaman'); // böyle bi kod yok tabiki siz düzgün yazarsınız işte.
header('location:http://siteadresi.com/index.php');
} else {
$hata = '3'; // kullanıcı adıyla şifre veritabanı bilgilerine göre uyuşmuyosa
}
}
}
if( $hata > 0 ){
echo 'Login olunamadı. Hata: ';
switch( $hata ){
case '1': echo 'Kullanıcı adı boş bırakılamaz'; break;
case '2': echo 'Şifre boş bırakılamaz'; break;
case '3': echo 'Kullanıcı adı ve şifresi birbiriyle uyuşmuyor'; break;
default: echo 'Bilinmeyen hata'; break;
}
}
?>
html form kodları -
ndmylmz bunu yazdı:
-----------------------------interfector bunu yazdı:
-----------------------------yok hacım ya olmadı mına ki :S
<?
session_start();
include '../setting.php';
if ($_SESSION['G5FGSA15AFS4ASFSA131SAF54645'] == ""){
header("location=login.html");
}
?>
burada bi salaklık yaptığımı düşünüyorum ama ne yapıyorum :S
-----------------------------hocam header("location=login.html") yazmışssın ben ilk defa gördüm normalde header("location:login.html") şeklinde yazılmıyor mu ?
-----------------------------vallahi bu şekilde yönlendirme çalışıyor hocam. sıkıntı yok. sıkıntımız login olma kısmındadır. :)
-
hocam hemen cevap veriyorum neden hep if kulannmışssın ? Onu merak ettim. $hata değişkenini başka 99 a eşitlenişssin ve sırayla sonra if olarak kullanmışssın. Php dilinde yukarıdaki if ile aşağıdaki if neredeyse aynı çalışır. Yani yukarıdaki ifte bir değişkeni değiştirmen aşağıdaki ife fayda sağlamaz. Diye biliyorum ben. Bu durmda mesela kullanıcı adı ve parola boş ise hatayı 1 e eşitlemişssin. Ama aşağıda yine if le yaplamışssın.Bu if döngüleri aynı anda işledği için hepsi baştaki $hata değişkenini alınıyor. Bu durumda son ifdeki $hata zorunluluğu yerine getirilmiş oluyor..
Daha basit bir sistem yapmanı önenirrim :)
<?php
session_start();
include '../setting.php';
$hata=99;
$kadi=guvenlik($_POST['kadi']);
$pass=guvenlik($_POST['pass']);
if(!empty($kadi) and !empty($pass)){
if(($kadi==$panel_kullanici_adi) and ($pass == $panel_parola)){
//gerekli yerler doğrulandı şimdi session oluşturulacak..
$_SESSION['G5FGSA15AFS4ASFSA131SAF54645']="b.demirdelen";
$_SESSION['yetki']=$ver["yetki"];
header("Refresh:2;index.php");
echo "Girişini yapıldı yönleniyorsunu..."
}else{
header("Refresh:2;login.html");
echo "Griş yapılamadı. Yönelniyorsunuz..";
}
}
?>
hocam gördüğün gibi $hata değişkenine ihtiaç bile duyulmadı :)
-
kafayı yemek üzereyim verilen bütün kodları denedim olmadı arkadaş ya :S bu arada kullanıcı adı ve parolayı vt de tutmuyorum setting.php içerisindedir. bi tane kodlama vt den kontrol ettiriyor sanırım :)
post etmedi sanıyor sanırsam galiba :S öyle bişey seziyorum. hataların hepsine bir mesaj yazdırdım. sonuç boş bırakma bi yerleri dedi. :S lan zaten boş değil ki dedim :S dinlemedi beni :(
edit: kafayı yemekten vaz geçtim ve sorunu çözdüm :) yardım etmeye çalışan bütün herkese teşekkür ediyorum kör gözüme istediğiniz gibi parmak sokabilirsiniz :) salak gibi kendi yazdığım scriptin özelliklerini unuttum :D setting.php ye niye panel kullanıcı adı ve şifre yazdım bilmiyorum zaten vt ye uyeler bi tablo açmışım bunuda setting.php içinde gerektiği gibi yakalatmışım :D salak gibi sen git vt de şifre ve admin bölümünü boş bırak setting.php ye tekrardan panel şifre kullanıcı yaz. salaklık başa bela arkadaş :D
