10/10/2018, 13:22

Các lấy giá trị trong hàm của PHP

Tình hình là mình mới tập tành viết PHP theo kiểu function nên có một vài điểm chưa rõ lắm. Đó là cách trả giá trị trong function.


login.html.php
Code:
</head>
<body>

	<h1>Log In</h1>
	<p>Ps Log In to view the page that you requested. </p>
	<?php if (isset($loginError)) :?>
		<p><?php htmlout($loginError); ?></p>
	<?php endif; ?>

	<form action="access.inc.php" method="POST">
		<div>
			<label for="username">Username:<input type="text" name="username" id="username"></label>
		</div>
		<div>
			<label for="password">Password:<input type="text" name="password" id="password"></label>
		</div>
		<div>
			<label for="password">Remember:<input type="checkbox" name="remember" value="1"></label>
		</div>
		<div>
			<input type="hidden" name="action" value="login">
			<input type="submit" value="Log In">
		</div>
	</form>
</body>
</html>
access.inc.php
Code:
<?php 
include_once $_SERVER['DOCUMENT_ROOT'] . '/demo/function/db.inc.php';

function userIsLoggedIn(){
	if (isset($_POST['action']) && $_POST['action']=='login') {
		if (!isset($_POST['username']) || $_POST['username']=='
			|| isset($_POST['password']) || $_POST['password']=='){
			$GLOBALS['loginError'] = 'Pls fill in both field';
			return FALSE;
		}
		if (databaseCotainsAuthor($_POST['username'], $_POST['password']) {
				session_start();
				$_SESSION['loggedIn'] = 'TRUE';
				$_SESSION['username'] = $_POST['username'];
				$_SESSION['password'] = $_POST['password'];
				return TRUE;
			}else{
				session_start();
				unset($_SESSION['loggedIn']);
				unset($_SESSION['username']);
				unset($_SESSION['password']);
				$GLOBALS['loginError'] = 'The specified email address or password was incorrect. ';
				return FALSE;
			}

		}
}

function databaseCotainsAuthor($username, $password){
	include 'db.inc.php';

	try {
		$sql = "SELECT COUNT(*) FROM membership WHERE username=:username AND password=:password";
		$s=$pdo->prepare($sql);
		$s->bindValue(':username', $username);
		$s->bindValue(':password', $password);
		$s->execute();
	} catch (Exception $e) {
		$msg = 'Error searching for author.';
		include 'msg.html.php';
		exit();
	}
	$row = $s->fetch();

	if ($row[0] >0) {
		return TRUE;
	}else{
		return FALSE;
	}
}
?>
Mình đại khái muốn xuất ra thông tin đăng nhập như vẫn chưa biết viết thế nào nhờ mọi người chỉ giúp .
Vô Thin viết 15:30 ngày 10/10/2018
Khi đọc lướt qua thấy các function của bạn trả về true hoặc false để thông báo các tình trạng chứ bạn không trả về một giá trị cụ thể để xác định chính xác vấn đề bạn cần biết. Tuy thế, bạn lại có sử dụng biến Global để lưu các thông tin, như vậy, thì mỗi khi kiểm tra việc đăng nhập chẳng hạn, bạn gọi hàm xong rồi, giá trị sẽ lưu trong mảng $GLOBALS của bạn, bạn chỉ cần echo hoặc print nó ra, đưa đúng index của mảng vào hay bạn dump nguyên mảng ra tùy ý.

Ví dụ, bạn sẽ có đoạn code:

Code:
<?php
if (!userIsLoggedIn()) {
    print "Lỗi chi tiết" . $GLOBALS['loginError'];
}
?>
anhduy89bmt viết 15:28 ngày 10/10/2018
Hic thật ra đoạn trên ông thầy code nên mình vẫn không hiểu lắm . Bạn có thể chỉ cho mình function mà lấy giá trị đăng nhập được không
anhduy89bmt viết 15:24 ngày 10/10/2018
Mình cố gắng viết đoạn code dễ hơn để dễ hiểu hơn nhưng mình cố gắng lấy giá trị $result vẫn không được . Khi submit thì không có gì xảy ra . Mình vẫn chưa hiểu lắm ..
Code:
  <?php 
            function addNumbers($firstNumber, $secondNumber)
            {
            if (isset($_POST['number1']) && isset($_POST['number2']))
            {
                $firstNumber = $_POST['number1'];
                $secondNumber = $_POST['number2'];
                $result = $firstNumber + $secondNumber;
                    echo $result;
            }

            }
    ?>

            <form action="" method="post">
            <p>1-st number: <input type="text" name="number1" /></p>
            <p>2-nd number: <input type="text" name="number2" /></p>
            <?php addNumbers($firstNumber, $secondNumber);?>
            <p><?php echo $result; ?></p>
            <p><input type="submit"/></p>
changtraingheo viết 15:29 ngày 10/10/2018
Code sai bấy nhầy hết lấy gì nó chạy

<?php

$result = '';

function addNumber($var, &$result) {
$result = $var['number1'] + $var['number2'];
}

if (isset($_POST['submit'])) {
addNumber($_POST, $result);
}

?>

<form method="post">
Number1: <input type="text" name="number1"> <br />
Number1: <input type="text" name="number2"> <br />
<input type="submit" name="submit" value="submit" />
</form>
<?php
echo $result;
?>
Bài liên quan
0