2016-04-02 9 views
1

kullanarak hatanın 500 ile biten. , Hala güzel bir hatayı 500.PDO/PHP LoginScript benim loginscript çalışma almak için bir süredir çalışıyordum ve ben konuyu bulmak için görünmüyor olabilir, ya im sadece kör ya da başka bir şey oluyor burada var MAMP

Herhangi bir fikir elde sonunda forma ı girişi doğru kimlik olmadığını

farketmez?

DB bağlamak işlev:

function db_connect() { 

i bu sütunu taşırsanız ->

$server = 'localhost'; 
    $uname = 'root'; 
    $passw = 'password'; 
    $datab = 'database'; 

    /* check connection */ 
    try{ 
     $conn = new PDO("mysql:host=$server;dbname=$datab;", $uname, $passw); 
    } catch(PDOException $e) { 
     die("Connection failed: " . $e->getMessage()); 
    } 

< ---

return $conn; /added this as suggested, still returns NULL. 
} 

giriş dosyası:

include('../lib/functions.php'); //This is correct! 
db_connect(); 

< - BURADA, çalışıyor - kayıt sırasında benim şifre karma hatalı olduğu yerde>

Daha önce bu kadar password_verify($_POST['password'], $results['passw']) bile her zaman doğru girişe sahip sahte dönen, hiçbir etkisi vardı bir sorunu vardı.

if(!empty($_POST['username']) && !empty($_POST['password'])): 

    $records = $conn->prepare('SELECT uname,passw FROM users WHERE uname = :user AND passw = :pass'); 
    $records->bindparam(':user', $_POST['username']); 
    $records->bindparam(':pass', $_POST['password']); 
    $records->execute(); 
    $results = $records->fetch(PDO::FETCH_ASSOC); 

    if(count($results) > 0 && password_verify($_POST['password'], $results['passw']) && $_POST['username'] == $results['uname']) //Also tried removing the &&-->username area incase two and statements were wrong without any luck { 
     die('It works!'); 
    } else { 
     die('OR NOT!'); 
    } 

endif; 
+0

Errorcode 500 sunucu hatası anlamına gelir. Örneğin. PHP betiğinizde. Php'nin hata kayıt dosyasını kontrol edin. (bkz php.ini) – paskl

+1

'db_connect()' hiçbir şey döndürmez! – Saty

+2

php kodunuzda beklenmedik bir hata oluştuğunda yapmanız gereken ilk şey _always_: http sunucuları hata kayıt dosyasına bakınız. Gerçekten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ – arkascha

cevap

1

Sizin db_connect() işlevi kendi kapsamda $conn tanımlar. Yani, değişken $conn yereldir. Ve db_connect()'un sonlandırılmasının ardından $conn'un çalışması biter.

Bu işlev dışında $conn yalnızca NULL'dur. İşlevinizden dış kapsama

Dönüş $conn:

function db_connect() { 
    $server = 'localhost'; 
    $uname = 'root'; 
    $passw = 'password'; 
    $datab = 'database'; 

    /* check connection */ 
    try{ 
     $conn = new PDO("mysql:host=$server;dbname=$datab;", $uname, $passw); 
    } catch(PDOException $e) { 
     die("Connection failed: " . $e->getMessage()); 
    } 

    return $conn; // here 
} 

Ve komut

:

include('../lib/functions.php'); //This is correct! 
$conn = db_connect(); 
// other codes 
+0

Bunu denedim, '$ conn' hala boş. ancak kodu işleve taşıdığımda ve giriş dosyasına doğrudan koyduğumda, doğru kimlik bilgilerini girdiğimde bile false döndürdüğümde% 50'ye ulaşır. –

+0

Şimdi kimlik bilgisi bölümünü çözdüm, ancak bir nedenden dolayı '$ conn' işlevi içinde kullanıldığında hala null değerini döndürüyor. Herhangi bir fikir? –

+0

Lütfen sorunuzu geliştirilmiş kodunuzla düzenleyin. –

İlgili konular