Проблема с поиском файла говорит код php
Я не пойму почему не ищет файл с id 1 хоть он должен его искать по результатам на страничке.
id ника 1 находится в API/name_id/'.$_GET['accname'].'.json
сам файл json accounts/1.json выглядит вот так
{"1":{"TVOFFicial1":{"Name":"TVOFFicial1","Avatar":"none","Description":"","Password":"5c28c7f51296e7b129220d40118cb46d","Email":"","Ban":false,"Role":"member"}}}
а API/name_id/1.json
{
"TVOFFicial1": "1"
}
Только я не пойму 1 почему говорит что такого файла нету...
<?
$proy = file_get_contents('API/name_id/'.$_GET['accname'].'.json');
$prov2 = json_decode($proy, true);
$id = $prov2[$_GET['accname']];
// err1 - Такой аккаунт уже существует
// err2 - Такого аккаунта не существует
// err3 - Неверный пароль
// err4 - Аккаунт в бане
function ca($accname,$accpass){
if(file_exists('accounts/'.$id.'.json')){
$jsoned = file_get_contents('accounts/'.$id.'.json');
$j = json_decode($jsoned,true);
if(md5($accpass) == $j[$id][$accname]['Password']){
if($j[$id][$accname]['Ban'] == true){
return "4";
}
if($j[$id][$accname]['Ban'] == "1days"){
return "5";
}
if($j[$id][$accname]['Ban'] == "7days"){
return "6";
}
if($j[$id][$accname]['Ban'] == "30days"){
return "7";
} else {
return "ok";
}
} else {
return "3";
}
} else {
return "2";
}
}
if($_COOKIE['accboolg1'] == false){
$accname = $_GET['accname'];
$accpass = $_GET['accpass'];
if(ca($accname,$accpass) == "ok"){
setcookie("accname", $accname);
setcookie("accpass", $accpass);
setcookie("id", $id);
setcookie("accboolg1", true);
echo 'Бачит';
echo '<!doctype html><html lang="en"><head><meta http-equiv="refresh" content="0; url=../user.php" /></head></html>';
} else {
//echo '<!doctype html><html lang="en"><head><meta http-equiv="refresh" content="0; url=../index.php?iderr='.ca($accname,$accpass).'" /></head></html>';
echo "ok";
}
}
$jsoned12346 = file_get_contents('accounts/'.$id.'.json');
$j12346 = json_decode($jsoned12346,true);
echo '<br>';
echo 'Id ника'. $id;
echo '<br>';
echo 'Твой пароль в md5 '.$j12346[$id][$accname]['Password'];
echo '<br>';
echo 'Твой пароль из строки в md5 '.md5($_GET['accpass']);echo '<br>';
echo ca($accname,$accpass);echo '<br>';
if(file_exists('accounts/'.$id.'.json')){
echo 'Файла есть!';
echo '<br>';
if(md5($_GET['accpass']) == $j12346[$id][$accname]['Password']){
echo 'Пароль верный';
}
else{
echo 'Пароль не верный';
}
}
else{
echo 'Файла нету!';
}
?>
Ответы (1 шт):
Во первых, это ужас :) Во вторых, функции file_get_contents и json_decode могут возвращать значения обозначающие ошибку. В третьих, в функции ca переменная $id недоступная. В четвёртых, некоторые (либо все) параметры GET запроса могут отсутствовать. В пятых, в PHP есть такая вещь, как elseif. В шестых, md5 лучше не использовать. В седьмых, вам стоит поработать над оформлением кода. По доброте душевной я переписал для вас ваш код, но не думайте что это будут тут делать всегда (:
<?php
if (!isset($_GET["accname"])) {
echo "Отсутствует параметр accname!";
exit();
} elseif (!isset($_GET["accpass"])) {
echo "Отсутствует параметр accpass!";
exit();
}
$proy = file_get_contents("API/name_id/" . $_GET["accname"] . ".json");
if ($proy === false) {
echo "Не удалось получить содержимое файла API/name_id/" . $_GET["accname"] . ".json!";
exit();
}
$prov2 = json_decode($proy, true);
if ($prov2 == null) {
echo "Не удалось перевести JSON строку в массив!";
exit();
}
$id = $prov2[$_GET["accname"]];
function ca($accname, $accpass) {
global $id;
if (file_exists("accounts/" . $id . ".json")) {
$jsoned = file_get_contents("accounts/" . $id . ".json");
if ($jsoned === false)
return "2";
$j = json_decode($jsoned, true);
if ($j == null)
return "3";
if (md5($accpass) == $j[$id][$accname]["Password"]) {
if ($j[$id][$accname]["Ban"] == true)
return "5";
elseif ($j[$id][$accname]["Ban"] == "1days")
return "6";
elseif ($j[$id][$accname]["Ban"] == "7days")
return "7";
elseif ($j[$id][$accname]["Ban"] == "30days")
return "8";
else
return "ok";
} else
return "4";
} else
return "1";
}
if ($_COOKIE["accboolg1"] == false) {
if (ca($_GET["accname"], $_GET["accpass"]) == "ok") {
setcookie("accname", $_GET["accname"]);
setcookie("accpass", $_GET["accpass"]);
setcookie("id", $id);
setcookie("accboolg1", true);
echo "Бачит";
echo "<!doctype html><html lang="en"><head><meta http-equiv="refresh" content="0; url=../user.php" /></head></html>";
} else {
//echo "<!doctype html><html lang="en"><head><meta http-equiv="refresh" content="0; url=../index.php?iderr=".ca($accname,$accpass)."" /></head></html>";
echo "ok";
}
}
$jsoned12346 = file_get_contents("accounts/" . $id . ".json");
if ($jsoned12346 === false) {
echo "Не удалось получить содержимое файла accounts/" . $id . ".json!";
exit();
}
$j12346 = json_decode($jsoned12346, true);
if ($j12346 == null) {
echo "Не удалось перевести JSON строку в массив!";
exit();
}
if (file_exists("accounts/" . $id . ".json")) {
if (md5($_GET["accpass"]) == $j12346[$id][$accname]["Password"])
echo "Пароль верный";
else
echo "Пароль не верный";
} else
echo "Файла нету!";
?>
P.s.Код не тестировал, если где-то допустил ошибку, то извините, я тоже человек :)
