调用PHP函数返回错误或成功结果



我试图为我的php文件创建一个登录函数,这样我就不会在每个页面上重复登录代码。我还在研究如何在PHP中使用函数。我在functions.php文件中创建了以下函数,并将其包含在每个页面的顶部:

function login($hostname, $version, $database, $username, $password) {
$url = 'https://' . $hostname . '/fmi/data/' . $version . '/databases/' . rawurlencode($database) . '/sessions';

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt ($ch, CURLOPT_HTTPHEADER, array (
'Content-Type: '. 'application/json',
'Authorization: Basic ' . base64_encode ($username . ':' . $password)
));
curl_setopt($ch, CURLOPT_POSTFIELDS, '{}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL, $url); 
$result = curl_exec ($ch); 
$error = curl_error ($ch);
$info = curl_getinfo($ch);
curl_close($ch);  
$loginResultArray = json_decode ($result, true);
// Check for Error Message
$errorCode = $loginResultArray['messages'][0]['code'];
$errorMessage = $loginResultArray['messages'][0]['message'];
if ($errorCode !== '0') { 
// Login Error
$loginError = 'Login Error: '. $errorMessage. ' (' . $errorCode . ')';
} else {
$loginError = '';
$token = $loginResultArray['response']['token'];
}
}

我现在在每页的顶部添加:

require_once 'inc/functions.php';
login($hostname, $version, $database, $username, $password) {
}

调用函数。我想在这里包括一些错误检查,以便如果函数返回错误或成功结果,我可以在调用函数后相应地分支。我不知道如何从函数返回错误或成功结果,所以我可以确定函数是否成功?

我认为有多种解决方案。一种选择是在登录失败且没有错误的情况下抛出异常:返回(或者可能存储?)令牌。抛出一个异常将停止执行(如果你没有在调用你的方法时捕获它)。

的例子:

function login($hostname, $version, $database, $username, $password) {
// ...
if ($errorCode !== '0') { 
// Login Error
throw new Exception('Login Error: '. $errorMessage. ' (' . $errorCode . ')');
} else {
return $loginResultArray['response']['token'];
}
}

如果你不想在出现错误的情况下停止执行,你可以返回一个结果数组,并处理login()方法被调用的内容。

的例子:

function login($hostname, $version, $database, $username, $password) {
// ...
if ($errorCode !== '0') { 
// Login Error
return [
'error' => 'Login Error: '. $errorMessage. ' (' . $errorCode . ')',
'token' => null,
];
} else {
return ['token' => $loginResultArray['response']['token']];
}
}
// ... In your other file:
require_once 'inc/functions.php';
$loginResult = login($hostname, $version, $database, $username, $password);
if (isset($loginResult['token'])) {
echo 'You are logged in!';
} else {
echo $loginResult['error'];
}

if ($errorCode !== '0') { 
>         // Login Error
>         $loginError = 'Login Error: '. $errorMessage. ' (' . $errorCode . ')';
>         return false;
>     } else {
>         $loginError = '';
>         $token = $loginResultArray['response']['token'];
>         return true; //here can return $token and check token avail or not 
> 
>     }

最新更新