Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Padekit neranda userio MYSQL database

Parašė rokasbalsys· 2014 Kov. 25 18:03:43
#1

Nezinau net kaip cia pasakyti, taciau yra problema, mysql database turiu susikures useri, ta prasme acc, taciau man jo vistiek neranda, kai prisijungiu raso 'We can\'t find that username. Have you registered?'


 
Cia login.php kodas
<?php
include 'core/init.php';
 
if (user_exists('rokas') === true);	{
	echo 'exists';
	} 
 
 
if (empty($_POST) === false) {
	$username = $_POST['username'];
	$password = $_POST['password'];
 
	if (empty($username) === true || empty($password) === true)	{
		$errors[] = 'You need to enter a username and password';
	}	else if (user_exists($username) === false) {
		$errors[] = 'We can\'t find that username. Have you registered?';
	}
		else if (user_active($username) === false) {
		$errors[] = 'You haven\'t activated your account!';
	}
		else {
 
		}
		print_r($errors);
}
?>
 


O cia users.php kodas kur parinkti turi man useri

<?php
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;
}


http://86.100.71.91/IR/ cia dabar darau svetaine
jungtis galite meginti su username:rokas psw:rokas
toki esu sukures.
Dar esu gan zalias php koduose, dariau pagal sita tutoriala:
https://www.youtube.com/watch?v=...

Redagavo rokasbalsys· 2014 Kov. 25 18:03:40

Parašė rokasbalsys· 2014 Kov. 25 18:03:03
#2

galvojau kad problema bus gal kad parasiau ' o ne `, taicau pakeitus, taspats.

 
return (mysql_result(mysql_query("SELECT COUNT(`USER_id`) FROM `users` WHERE `username` = '$username'"), 0) == 1) ? true : false;
 

Parašė Pakartoti slaptažodį· 2014 Kov. 25 18:03:54
#3

labas, visų pirma.. kodas žiauriai blogas, naujokiškas ir super klaidinantis. jei tavo init.php faile tik ta vienintėlė funkcija, nenaudok jo, funkciją įterpk į patį pagrindinį failą.

if (user_exists('rokas') === true);{
echo 'exists';
}

galima būtų perrašyti tiesiog taip
if (user_exists('rokas')) echo 'exists';


patikrinimas
if (empty($_POST) === false) {

veiks, tačiau tai blogas sprendimas, geriau naudok funkciją isset kuri gauto tavo formą.
if (isset($_POST)) {


vietoj
empty($username) === true

rašyk
empty($username)


na o vietoj
user_exists($username) === false

tiesiog
!user_exists($username)


štai taip...

if (empty($username) || empty($password)) {
$errors[] = 'You need to enter a username and password';
} elseif (!user_exists($username)) {
$errors[] = 'We can\'t find that username. Have you registered?';
} elseif (!user_active($username)) {
$errors[] = 'You haven\'t activated your account!';
} else {
// cia kazkas vyksta jei prisijungem gerai
}
print_r($errors);


o pačią tikrinimo funkciją geriau perrašyk taip

function user_exists($u) {
return (mysql_num_rows(mysql_query("SELECT username FROM users WHERE username = '".sanitize($u)."'")) == 1) ? true : false;
}


nežinau ir nesu tikras ar veiks, bet tiesiog taip kodas bus žymiai normalesnis

Redagavo Pakartoti slaptažodį· 2014 Kov. 25 18:03:50

Parašė rokasbalsys· 2014 Kov. 25 18:03:36
#4

Padariau kaip pasiulei, taciau vistiek sako kad 'We can\'t find that username. Have you registered?'

Parašė Pakartoti slaptažodį· 2014 Kov. 25 19:03:22
#5

if (empty($username) || empty($password)) {
$errors[] = 'You need to enter a username and password';
} elseif (mysql_num_rows(mysql_query("SELECT username FROM users WHERE username = '".$username."'")) != 1) {
$errors[] = 'We can\'t find that username. Have you registered?';
} elseif (!user_active($username)) {
$errors[] = 'You haven\'t activated your account!';
} else {
// cia kazkas vyksta jei prisijungem gerai
}
print_r($errors);


o jei patikrinimą va tokį padaryt, ne per funkciją? jei ir dabar rodys klaidą, vadinasi tikrai nėra to userio, patikrink mysql