slm arkadaşlar scriptim için yaptığım üyelik sistemi localhostta düzgün çalışırken nedense sunucuda üye adı ve şifresini doğru girmeme rağmen giriş yapmıyor bunun nedeni ne olabilir yardımlarınızı bekliyorum...
Kodlarım
<?
session_start();
include("../vt.php");
session_register("login");
session_register("pass");
$veri = mysql_query("select login, password from admin where login = '$login' AND password = '$pass' ");
$bak = mysql_num_rows($veri);
if($bak < 1) {
echo "<script language=\"javascript\">alert('Yönetici adı veya şifresi hatalı'); history.back(-1);</script>";
session_destroy();
echo "<META HTTP-EQUIV='refresh' CONTENT='1; URL=giris.php'>";
}
else {
echo "Giriş Başarılı...";
}
?>
bu şekilde session ataması yapmayın ! eğer bu şekilde kullanmak istiyorsanız register_globals 'un enable olması gerekiyor.
Super Global değişkenler var, session içinde bu mevcut..
$_SESSION
örnek
<?php
session_start();
$_SESSION['login'] = 'login değeri';
$_SESSION['pass'] = 'pass değeri';
// bu şekilde kullanmak varken neden session_register() ?
?>
register_globals'a artık takıntı yapmayın zaten php 6.0.0 'da register_globals tamamen kaldırıldı.
Aşşağıdaki şekilde hazırladığım sayfalar bile yani
index.php?sayfa=mesela bu sayfa localhostta çalışırken nedense sunucuda bunlarda boş sayfa olarak çıkıyor... Bununda register_globals ile bir alakası varmıdır?
<?
error_reporting('NONE');
switch ($sayfa) {
case mesela:
echo "mesela sayfasi";
break;
}
?>
bakın burada'da aynı işlevi yapmışsınız
$sayfa normal global bir değişkendir.Bu değişken eğer register_globals açık değilse dışarıdan veri almaz.
Php'nin register_globals'in durumuna bağlı kalmadığı super global değişkenler vardır.
Şimdi sizin yukarda yazdığınız kodu yanlış kabul ediyorum ve yanlışlarını gösteriyorum.Onun hemen aşağısında'da doğrusunu yazıyorum.
<?
// Bu kullanım yanlıştır !
error_reporting('NONE');
switch ($sayfa) {
case mesela:
echo "mesela sayfasi";
break;
}
?>Doğru kullanımı aşağıdadır.
<?
// Bu kullanım doğrudur !
//Hiç hata göstermez.
error_reporting(0);
// error reporting(E_ALL); // Bütün hataları,uyarıları ve bildirileri gösterir.
// error_reporting(E_ALL & ^ E_NOTICE); bildiriler hariç bütün hataları gösterir
switch($_GET['sayfa'])
{
case 'mesela':
echo 'mesela sayfasi';
break;
}
?>Normal değişkenlere böyle direkt erişeme sahip olmak çok kullanışlı gelebilir. Ancak, yazdığınız scriptlerinizin güvenliğinden ödün vermenizi gerektirecek programlama hatalarına(değişkenler tanımlanırken ilk değer vermeyi unutmak gibi) maalesef ki açıktır.
register_globals'i kapalı konumdan açık konuma getirmeden önce php takımı neden php 4.2.0 'dan sonra bu kısmı kapalı konumda belirlediğini'de düşünmekde yarar var