2016-04-16 14 views
0

ich meine Website in einem Web-Server hochladen und die Anmeldungs ​​ist nicht working.On localhost alles fine.Now war, als ich das es korrekten Benutzernamen und Passwort ein, gibt mir Dieser Benutzername/Passwort-Kombination ist nicht korrekt. wenn ich das falsche Passwort setzen geben sie diese andere Validierungen again.The funktionieren und mein Code: log in.phpLogin-Seite funktioniert nicht

<?php 
include 'core/init.php'; 

if(empty($_POST) === false) { 
    $username= $_POST['username']; 
    $password = $_POST['password']; 

if(empty($username)=== true || empty($password) === true) { 
    $errors[] = 'You need to enter a username & password'; 
}else if (user_exists($username) === false) { 
    $errors[]='We cant find that username.Have you registered?'; 
}else if (user_active($username) === false) { 
    $errors[]='You havent activated your account!'; 
}else { 

    if(strlen($password) > 32) { 
     $errors[] = 'Password too long'; 

    } 
    $login = login($username, $password); 
    if($login === false) { 
     $errors[] = 'That username/password combination is incorrect'; 

    }else{ 
$_SESSION['user_id'] = $login; 
header('Location: index2.php'); 
exit(); 
    }  
    } 
}else { 
$errors[] = 'No data received'; 
    } 
    include 'overall/headerr.php'; 
if (empty($errors)=== false) { 
    ?> 
    <h2>We tried to log you in, but...</h2> 
    <?php 
    echo output_errors($errors); 
} 
?> 

users.php

function login($username, $password){ 
     $user_id = user_id_from_username($username); 

     $username = sanitize($username); 
     $password = md5($password); 

     return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username`='$username' AND `password`='$password'"), 0)==1) ? $user_id : false; 
} 
function logged_in() { 
    return (isset($_SESSION['user_id'])) ? true : false; 
} 
function user_exists($username) { 
    $username = sanitize($username); 
    return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` ='$username' "), 0) == 1) ? true : false; 
    } 
function user_active($username) { 
    $username = sanitize($username); 
    return(mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `active` =1"), 0) == 1) ? true : false; 
} 
function user_id_from_username($username) { 
    $username = sanitize($username); 
    return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id'); 
} 
general.php 
<?php 
function sanitize($data) { 
    return mysql_real_escape_string($data); 
} 

function output_errors($errors) { 
$output = array(); 
foreach($errors as $error) { 
$output[] = '<li>'. $error .'</li>'; 
} 
return '<ul>' . implode ('', $output) . '</ul>'; 
} 
?> 

init.php

<?php 
session_start(); 

require 'database/connect.php'; 
require 'functions/general.php'; 
require 'functions/users.php'; 
$errors = array() ; 
?> 
+2

Consult diese folgenden Links http://php.net/manual/en/function.mysql-error.php und http://php.net/ manual/en/function.error-reporting.php und Anwendung, um Ihren Code. –

+1

Das Stapeln Ihrer Abfragefunktionen macht das * Debugging * ziemlich schwierig, d. 'Mysql_result (mysql_query())' Haben Sie einen Blick auf die von @ Fred-II- ausgebrachten Links als Start. Sie müssen sicherstellen, dass Sie die Verbindung zur Datenbank ordnungsgemäß herstellen und dass bei Ihren Abfragen keine Fehler zurückgegeben werden. Wenn alles auf localhost * funktioniert *, würde ich vermuten, dass die Datenbank auf Ihrem Prod-Server in Frage steht. – Marcus

+0

Auf einer anderen Anmerkung, Rückkehr 'mysql_real_escape_string()' im 'sanitize()' Funktion ist überflüssig. Warum nicht einfach mysql_real_escape_string() 'direkt aufrufen? Oder noch einfacher: '$ _POST = array_map ('mysql_real_escape_string', $ _POST);' und kümmere dich um das gesamte Array in einem Schuss. – Marcus

Antwort

0

Warum machen Sie Ihren Code lange & kompliziert?

Ich benutze diese einfach und schön Code:

<?php 
session_start();     /* Start a session on browser */ 
require('connect.php');    /* Get database-connection script */ 
$username = $_POST['username'];  /* Define variable ' $username ' */ 
$password = $_POST['password'];  /* Define variable ' $password ' */ 

/* Check if username or password is empty */ 
if(empty($username) || empty($password)) { 
    /* If one of the fields are empty, send user back. */ 
    echo 'afar'; // All fields are required 
} else { 
    /* Select usernames & passwords from our database */ 
    $check_accpass = $dbh->query('SELECT username,password FROM `users` WHERE `username`='.$dbh->quote($username).' AND `password`='.$dbh->quote($password).'')->fetchAll(); 
    /* Check if username & password has any matches in our database */ 
    if($check_accpass) { 
    echo 'success'; 
    /* IF they do, set $username to $_SESSION['USERNAME'] and same with password */ 
    $_SESSION['username'] = $username; 
    $_SESSION['password'] = $password; 

    // Set cookies 
    // name, value, expire, path, domain, secure, httponly 
    setcookie("username", $username, time() + (172800 * 30), "/", NULL, TRUE, TRUE); /* 2 days = 48 hours */ 
    setcookie("password", $password, time() + (172800 * 30), "/", NULL, TRUE, TRUE); /* 2 days = 48 hours */ 
    // Send user to root 
    header('location:/'); 
    } else { 
    /* if no matches are found, print the text below */ 
    echo 'wuop'; // wrong username or password 
    } 
} 
?> 
Verwandte Themen