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() ;
?>
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. –
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
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