IncLudE adlı üyeden alıntı: mesajı görüntüle
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ı.



IncLudE adlı üyeden alıntı: mesajı görüntüle
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