<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

В начале курса у нас будет только идея, а в конце готовый продукт, который можно использовать в практических целях.

В рамках упражнений курса Вы параллельно со мной будете создавать свою большую программу на Java, что даст Вам необходимую практику, после которой для Вас уже не будет разницы, какого размера создавать программы.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Нужна помощь.
07.03.2016 22:55:19 Нужна помощь. Сообщение #1
Vasse

Vasse

Новичок

Новичок

Дата регистрации:
07.03.2016 22:08:34

Сообщений: 7

Здравствуйте люди добрые. Я тоже как и многие проходя курс PHP и MySQL с Нуля до Гуру наткнулся на проблему, которую не в состоянии сам решить.  Уже несколько недель мучаюсь и толку ноль, пересмотрел ролики заново в особенности бонусный по поиску ошибок и что-то как-то у меня находка ошибки не получилась. Дошел до создания движка с нуля до регистрации пользователей, идя до этого этапа было множество ошибок, но они наверно были слишком легкими, так как я с ними справлялся.

Ошибка заключается в том, что почему-то данные не отправляются в таблицу и не каких ошибок не появляется, хотя я всё с точностью и  внимательно списывал. Страница просто обновляется.

И вторая ошибка вот такая, тоже долго с ней мучаюсь:
Warning: syntax error, unexpected BOOL_TRUE in lib/text/messages.ini on line 3 in D:\home\test.local\www\lib\globalmessage_class.php on line 10
Скидываю скрипты, заранее прошу прощения за то, что их так много.

user_class.php
<?php
require_once "global_class.php";
class User extends GlobalClass {
public function __construct($db) {
parent::__construct("users", $db);
}

public function addUser($login, $password, $regdate) {
if (!$this->checkValid($login, $password, $regdate)) return false;
return $this->add(array("login" => $login, "password" => $password, "regdate" => $regdate));
}

public function editUser($id, $login, $password, $regdate) {
if (!$this->checkValid($login, $password, $regdate)) return false;
return $this->edit($id, array("login" => $login, "password" => $password, "regdate" => $regdate));
}

public function isExistsUser($login) { //onko login olemassa jo
return $this->isExists("login", $login);
}

public function checkUser($login, $password) {
$user = $this->getUserOnLogin($login);
if (!$user) return false;
return $user["password"] === $password;
}

public function getUserOnLogin($login) {
$id = $this->getField("id", "login", $login);
return $this->get($id);
}

private function checkValid($login, $password, $regdate) { //proverka na korrektnost
if (!$this->valid->validLogin($login)) return false;
if (!$this->valid->validHash($password)) return false;
if (!$this->valid->validTimeStamp($regdate)) return false;
return true;
}
}
?>
manage_class.php<?php
require_once "config_class.php";
require_once "user_class.php";
class Manage {

private $config;
private $user;
private $data;

public function __construct($db) {
session_start();
$this->config = new Config();
$this->user = new User($db);
$this->data = $this->secureData(array_merge($_POST, $_GET));
}

private function secureData($data) {
foreach($data as $key => $value) {
if (is_array($value)) $this->secureData($value);
else $data[$key] = htmlspecialchars($value);
}
return $data;
}

public function redirect($link) {
header("Location: $link";
exit;
}

public function regUser() {
$link_reg = $this->config->address."?view=reg";
$login = $this->data["login"];
if ($this->user->isExistsUser($login)) return $this->returnMessage("EXISTS_LOGIN", $link_reg);
$password = $this->data["password"];
if ($password == "" return $this->unknownError($link_reg);
$password = $this->hashPassword($password);
$result = $this->user->addUser($login, $password, time());
if ($result) return $this->returnPageMessage("SUCCESS_REG", $this->config->address."?view=message";
else return $this->unknownError($link_reg);
}

public function login() {
$login = $this->data["login"];
$password = $this->data["password"];
$password = $this->hashPassword($password);
$r = $_SERVER["HTTP_REFERER"];
if ($this->user->checkUser($login, $password)) {
$_SESSION["login"] = $login;
$_SESSION["password"] = $password;
return $r;
}
else {
$_SESSION["error_auth"] = 1;
return $r;
}
}

public function logout() {
unset($_SESSION["login"]);
unset($_SESSION["password"]);
return $_SERVER["HTTP_REFERER"];
}

private function hashPassword($password) {
return md5($password.$this->config->secret);
}

private function unknownError($r) {
return $this->returnMessage("UNKNOWN_ERROR", $r);
}

private function returnMessage($message, $r) {
$_SESSION["message"] = $message;
return $r;
}

private function returnPageMessage($message, $r) {
$_SESSION["page_message"] = $message;
return $r;
}
}
?>
database_class.php<?php
require_once "config_class.php";
require_once "checkvalid_class.php";
class DataBase {
private $config;
private $mysqli;
private $valid;

public function __construct() {
$this->config = new Config();
$this->valid = new CheckValid();
$this->mysqli = new mysqli($this->config->host, $this->config->user, $this->config->password, $this->config->db);
$this->mysqli->query("SET NAMES 'utf8'";
}

private function query($query) {
return $this->mysqli->query($query);
}

private function select($table_name, $fields, $where = "", $order = "", $up = true, $limit = "" {
for ($i = 0; $i < count($fields); $i++) {
if ((strpos($fields[$i], "(" === false) && ($fields[$i] != "*") $fields[$i] = "`".$fields[$i]."`";
}
$fields = implode(",", $fields);
$table_name = $this->config->db_prefix.$table_name;
if (!$order) $order = "ORDER BY `id`";
else {
if ($order != "RAND ()" {
$order = "ORDER BY `$order`";
if (!$up) $order.= " DESC";
}
else $order = "ORDER BY $order";
}
if ($limit) $limit = "LIMIT $limit";
if ($where) $query = "SELECT $fields FROM $table_name WHERE $where $order $limit";
else $query = "SELECT $fields FROM $table_name $order $limit";
$result_set = $this->query($query);
if (!$result_set) return false;
$i = 0;
while ($row = $result_set->fetch_assoc()) {
$data [$i] = $row;
$i++;
}
$result_set->close();
return $data;
}

public function insert($table_name, $new_values) {
$table_name = $this->config->db_prefix.$table_name;
$query = "INSERT INTO $table_name (";
foreach ($new_values as $field => $value) $query .="`".$field."`,";
$query = substr($query, 0, -1);
$query .= " VALUES (";
foreach ($new_values as $value) $query .= "'".addslashes($value)."',";
$query = substr($query, 0, -1);
$query .="";
return $this->query($query);
}

private function update($table_name, $upd_fields, $where) {
$table_name = $this->config->db_prefix.$table_name;
$query = "UPDATE $table_name SET ";
foreach ($upd_fields as $field => $value) $query .= "`$shield` = '".addslashes($value)."',";
$query = substr($query, 0, -1);
if ($where) {
$query .= " WHERE $where";
return $this->query($query);
}
else return false;
}

public function delete($table_name, $where = "" {
$table_name = $this->config->db_prefix.$table_name;
if ($where) {
$query = "DELETE FROM $table_name WHERE $where";
return $this->query($query);
}
else return false;
}

public function deleteAll($table_name) {
$table_name = $this->config->db_prefix.$table_name;
$query = "TRUNCATE TABLE `$table_name`";
return $this->query($query);
}

public function getField($table_name, $field_out, $field_in, $value_in) {
$data = $this->select($table_name, array($field_out), "`$field_in`='".addslashes($value_in)."'";
if (count($data) != 1) return false;
return $data[0][$field_out];
}

public function getFieldOnID($table_name, $id, $field_out) {
if (!$this->existsID($table_name, $id)) return false;
return $this->getField($table_name, $field_out, "id", $id);
}

public function getAll($table_name, $order, $up) {
return $this->select($table_name, array("*", "", $order, $up);
}

public function getAllOnField($table_name, $field, $value, $order, $up) {
return $this->select($table_name, array("*", "`$field`='".addslashes($value)."'", $order, $up);
}

public function getLastID($table_name) {
$data = $this->select($table_name, array("MAX(`id`)");
return $data[0]["MAX(`id`)"];
}

public function deleteOnID($table_name, $id) {
if (!$this->existsID($table_name, $id)) return false;
return $this->delete($table_name, "`id` = '$id'";
}

public function setField($table_name, $field, $value, $field_in, $value_in) {
return $this->update($table_name, array($field => $value), "`$field_in` = '".addslashes($value_in)."'";
}

public function setFieldOnID($table_name, $id, $field, $value) {
if (!$this->existsID($table_name, $id)) return false;
return $this->setField($table_name, $field, $value, "id", $id);
}

public function getElementOnID($table_name, $id) {
if (!$this->existsID($table_name, $id)) return false;
$arr = $this->select($table_name, array ("*", "`id` = '$id'";
return $arr[0];
}

public function getRandomElements($table_name, $count) {
return $this->select($table_name, array("*", "", "RAND()", true, $count);
}

public function getCount($table_name) {
$data = $this->select($table_name, array("COUNT(`id`)");
return $data[0]["COUNT(`id`)"];
}

public function isExists($table_name, $field, $value) { // Onko login olemassa
$data = $this->select($table_name, array("id", "`$field` = '".addslashes($value)."'";
if (count($data) === 0) return false;
return true;
}

private function existsID($table_name, $id) {
if (!$this->valid->validID($id)) return false;
$data = $this->select($table_name, array("id", "`id` = '".addslashes($id)."'";
if (count($data) === 0) return false;
return true;
}

public function __destruct () {
if ($this->mysqli) $this->mysqli->close();
}
}
?>
regcontent_class.php<?php
require_once "modules_class.php";
class RegContent extends Modules {
public function __construct($db) {
parent::__construct($db);
}

protected function getTitle() {
return "";
}

protected function getDescription() {
return "";
}

protected function getKeyWords() {
return "";
}

protected function getMiddle() {
$sr["message"] = $this->getMessage();
$sr["login"] = $_SESSION["login"];
return $this->getReplaceTemplate($sr, "form_reg";
}
}
?>
modules_class.php
<?php
require_once "config_class.php";
require_once "article_class.php";
require_once "section_class.php";
require_once "user_class.php";
require_once "menu_class.php";
require_once "banner_class.php";
require_once "message_class.php";
require_once "email_class.php";
abstract class Modules {
protected $config;
protected $article;
protected $section;
protected $user;
protected $menu;
protected $banner;
protected $message;
protected $email;
protected $data;
protected $user_info;

public function __construct($db) {
session_start();
$this->config = new Config();
$this->article = new Article($db);
$this->section = new Section($db);
$this->user = new User($db);
$this->menu = new Menu($db);
$this->banner = new Banner($db);
$this->message = new Message();
$this->email = new Email();
$this->data = $this->secureData($_GET);
$this->user_info = $this->getUser();
}

private function getUser() {
$login = $_SESSION['login'];
$password = $_SESSION["password"];
if ($this->user->checkUser($login, $password)) return $this->user->getUserOnLogin($login);
else return false;
}

public function getContent() {
$sr["title"] = $this->getTitle();
$sr["meta_desc"] = $this->getDescription();
$sr["meta_key"] = $this->getKeyWords();
$sr["menu"] = $this->getMenu();
$sr["auth_user"] = $this->getAuthUser();
$sr["banners"] = $this->getBanners();
$sr["top"] = $this->getTop();
$sr["middle"] = $this->getMiddle();
$sr["bottom"] = $this->getBottom();
return $this->getReplaceTemplate($sr, "main";
}

abstract protected function getTitle();
abstract protected function getDescription();
abstract protected function getKeyWords();
abstract protected function getMiddle();

protected function getMenu() {
$menu = $this->menu->getAll();
for ($i = 0; $i < count($menu); $i++) {
$sr["title"] = $menu[$i]["title"];
$sr["link"] = $menu[$i]["link"];
$text .= $this->getReplaceTemplate($sr, "menu_item";
}
return $text;
}

protected function getAuthUser() {
if ($this->user_info) {
$sr["username"] = $this->user_info["login"];
return $this->getReplaceTemplate($sr, "user_panel";
}
if ($_SESSION["error_auth"] == 1) {
$sr["message_auth"] = $this->getMessage("ERROR_AUTH";
unset($_SESSION["error_auth"]);
}
else $sr["message_auth"] = "";
return $this->getReplaceTemplate($sr, "form_auth";
}

protected function getBanners() {
$banners = $this->banner->getAll();
for ($i = 0; $i < count($banners); $i++) {
$sr["code"] = $banners[$i]["code"];
$text .= $this->getReplaceTemplate($sr, "banner";
}
return $text;
}

protected function getTop() {
return "";
}

protected function getBottom() {
return "";
}

private function secureData($data) {
foreach($data as $key => $value) {
if (is_array($value)) $this->secureData($value);
else $data[$key] = htmlspecialchars($value);
}
return $data;
}

protected function getBlogArticles($articles, $page) {
$start = ($page - 1) * $this->config->count_blog;
$end = (count($articles) > $start + $this->config->count_blog)? $start + $this->config->count_blog: count($articles);
for ($i = $start; $i < $end; $i++) {
$sr["title"] = $articles[$i]["title"];
$sr["intro_text"] = $articles[$i]["intro_text"];
$sr["date"] = $this->formatDate($articles[$i]["date"]);
$sr["link_article"] = $this->config->address."?view=article&id=".$articles[$i]["id"];
$text .=$this->getReplaceTemplate($sr, "article_intro";
}
return $text;
}

protected function formatDate($time) {
return date("Y-m-d H:i:s", $time);
}

protected function getMessage($message = "" {
if ($message = "" {
$message = $_SESSION["message"];
unset($_SESSION["message"]);
}
$sr["message"] = $this->message->getText($message);
return $this->getReplaceTemplate($sr, "message_string";
}

protected function getPagination($count, $count_on_page, $link) {
$count_pages = ceil($count / $count_on_page);
$sr["number"] = 1;
$sr["link"] = $link;
$pages = $this->getReplaceTemplate($sr, "number_page";
$sym = (strpos($link, "?" !== false)? "&": "?";
for ($i = 2; $i <= $count_pages; $i++) {
$sr["number"] = $i;
$sr["link"] = $link.$sym."page=$i";
$pages .= $this->getReplaceTemplate($sr, "number_page";
}
$els["number_pages"] = $pages;
return $this->getReplaceTemplate($els, "pagination";
}

protected function getTemplate($name) {
$text = file_get_contents($this->config->dir_tmpl.$name.".tpl";
return str_replace("%address%", $this->config->address, $text);
}

protected function getReplaceTemplate($sr, $template) {
return $this->getReplaceContent($sr, $this->getTemplate($template));
}

private function getReplaceContent($sr, $content) {
$search = array();
$replace = array();
$i = 0;
foreach ($sr as $key => $value) {
$search[$i] = "%$key%";
$replace[$i] = $value;
$i++;
}
return str_replace($search, $replace, $content);
}
}
?>
Заранее всем огромное спасибо за помощь и ваше потраченное время. 
Профиль Ответить
12.03.2016 09:38:26 Нужна помощь. Сообщение #2
CyberGenius777

CyberGenius777

Освоившийся

Освоившийся

Дата регистрации:
25.11.2013 14:39:15

Сообщений: 30

У тебя ошибка в globalmessage_class.php файле, нахрена ты весь этот мусор сюда выложил? Где globalmessage_class.php ?
Профиль Ответить
12.03.2016 16:35:09 Нужна помощь. Сообщение #3
Vasse

Vasse

Новичок

Новичок

Дата регистрации:
07.03.2016 22:08:34

Сообщений: 7

И вам тоже привет. Это 2 ошибка, я ее скинул за одно, а первая ошибка, это та по которой я здесь и обратился за помощью, а именно если кому-то лень было читать а просто глазами просмотрели: Не работает регистрация пользователя, он просто обновляет страницу и больше нечего. 

А  globalmessage_class.php выглядит вот так, это 2 ошибка. 
<?php
require_once "config_class.php";
abstract class GlobalMessage {
private $data;

public function __construct($file) {
$config = new Config();
$this->data = parse_ini_file($config->dir_text.$file.".ini"; // Это 10 строка
}

public function getTitle($name) {
return $this->data[$name."_TITLE"];
}

public function getText($name) {
return $this->data[$name."_TEXT"];
}
}
?>
Спасибо.
Профиль Ответить
12.03.2016 16:57:11 Нужна помощь. Сообщение #4
Vasse

Vasse

Новичок

Новичок

Дата регистрации:
07.03.2016 22:08:34

Сообщений: 7

Еще раз здравствуйте! Расскажу вам подробнее об второй ошибке, то есть он мне выдает ошибку на 3 строке в  INI файле, если там напишу кучу каракуль, между второй и третей строкой Или сотру 3 и 4 строки, что будет не ERROR_CAPTCHA_TITLE а EXISTS_LOGIN_TITLE то ошибка не меняется, а если сотру все строки кроме 1-ой и 2-ой, то ошибка пропадает. Вот в чет суть то всей ошибки, что до меня не доходит, почему именно 3 строка??? А не 5 или 6? Ведь ему ненужен текст, так как я сказал что он выдает 3 строку даже если написано вот так.



UNKNOWN_ERROR_TITLE=Tuntematon virhe
UNKNOWN_ERROR_TEXT=Yrittäkää kokeilla myöhemmin, tai ottakaa yhteys
ERROR_CAPTCHA_TITLE=Tarkistuskoodi on väärä
ERROR_CAPTCHA_TEXT=Tarkistuskoodi on väärä
EXISTS_LOGIN_TITLE=Kyseinen käyttäjätunnus on jo olemassa
EXISTS_LOGIN_TEXT=Kyseinen käyttäjätunnus on jo olemassa
SUCCESS_REG_TITLE=Rekisteröinti onnistui
SUCCESS_REG_TEXT=Nyt käyttäjä voi kirjautua omilla tunnuksilla sivulle.
UNKNOWN_ERROR_TITLE=Tuntematon virhe
UNKNOWN_ERROR_TEXT=Yrittäkää kokeilla myöhemmin, tai ottakaa yhteys
ascnhkjashcflkcmöaÄSPöfõ34G6FHSJ
ERROR_CAPTCHA_TITLE=Tarkistuskoodi on väärä
ERROR_CAPTCHA_TEXT=Tarkistuskoodi on väärä
EXISTS_LOGIN_TITLE=Kyseinen käyttäjätunnus on jo olemassa
EXISTS_LOGIN_TEXT=Kyseinen käyttäjätunnus on jo olemassa
SUCCESS_REG_TITLE=Rekisteröinti onnistui
SUCCESS_REG_TEXT=Nyt käyttäjä voi kirjautua omilla tunnuksilla sivulle.

Заранее спасибо.
Профиль Ответить
12.03.2016 17:40:38 Нужна помощь. Сообщение #5
CyberGenius777

CyberGenius777

Освоившийся

Освоившийся

Дата регистрации:
25.11.2013 14:39:15

Сообщений: 30

В ini файле лишних пробелов нету? Если есть, то нужны кавычки

http://php.net/manual/en/function.parse-ini-file.php найди там свою ошибку

зайди на этот сайт и воспользуйся поиском на странице, введи туда bool_
Найдешь свою ошибку
Профиль Ответить
12.03.2016 17:41:13 Нужна помощь. Сообщение #6
CyberGenius777

CyberGenius777

Освоившийся

Освоившийся

Дата регистрации:
25.11.2013 14:39:15

Сообщений: 30

Выложи сюда содержимое ini файла
Профиль Ответить
12.03.2016 17:45:05 Нужна помощь. Сообщение #7
Vasse

Vasse

Новичок

Новичок

Дата регистрации:
07.03.2016 22:08:34

Сообщений: 7

Посмотрел вроде нету. Вот содержимое начиная с первой строки.

UNKNOWN_ERROR_TITLE=Tuntematon virhe
UNKNOWN_ERROR_TEXT=Yrittäkää kokeilla myöhemmin, tai ottakaa yhteys ylläpitäjään.
ERROR_CAPTCHA_TITLE=Tarkistuskoodi on väärä
ERROR_CAPTCHA_TEXT=Tarkistuskoodi on väärä
EXISTS_LOGIN_TITLE=Kyseinen käyttäjätunnus on jo olemassa
EXISTS_LOGIN_TEXT=Kyseinen käyttäjätunnus on jo olemassa
SUCCESS_REG_TITLE=Rekisteröinti onnistui
SUCCESS_REG_TEXT=Nyt käyttäjä voi kirjautua omilla tunnuksilla sivulle.
Профиль Ответить
12.03.2016 17:46:59 Нужна помощь. Сообщение #8
CyberGenius777

CyberGenius777

Освоившийся

Освоившийся

Дата регистрации:
25.11.2013 14:39:15

Сообщений: 30

UNKNOWN_ERROR_TITLE=Tuntematon virhe 
UNKNOWN_ERROR_TEXT=Yrittäkää kokeilla myöhemmin, tai ottakaa yhteys ylläpitäjään. 
ERROR_CAPTCHA_TITLE=Tarkistuskoodi on väärä 
ERROR_CAPTCHA_TEXT=Tarkistuskoodi on väärä 
EXISTS_LOGIN_TITLE=Kyseinen käyttäjätunnus on jo olemassa 
EXISTS_LOGIN_TEXT=Kyseinen käyttäjätunnus on jo olemassa 
SUCCESS_REG_TITLE=Rekisteröinti onnistui 
SUCCESS_REG_TEXT=Nyt käyttäjä voi kirjautua omilla tunnuksilla sivulle.

В смысле нету? А после знака равно? Там целый текст идет
Вот так сделай

UNKNOWN_ERROR_TITLE="Tuntematon virhe" 
UNKNOWN_ERROR_TEXT="Yrittäkää kokeilla myöhemmin, tai ottakaa yhteys ylläpitäjään. "
ERROR_CAPTCHA_TITLE="Tarkistuskoodi on väärä "
ERROR_CAPTCHA_TEXT="Tarkistuskoodi on väärä "
EXISTS_LOGIN_TITLE="Kyseinen käyttäjätunnus on jo olemassa" 
EXISTS_LOGIN_TEXT="Kyseinen käyttäjätunnus on jo olemassa" 
SUCCESS_REG_TITLE="Rekisteröinti onnistui" 
SUCCESS_REG_TEXT="Nyt käyttäjä voi kirjautua omilla tunnuksilla sivulle."
Профиль Ответить
12.03.2016 17:49:50 Нужна помощь. Сообщение #9
CyberGenius777

CyberGenius777

Освоившийся

Освоившийся

Дата регистрации:
25.11.2013 14:39:15

Сообщений: 30

Слово ON зарезервированное, поэтому текст в кавычках держать надо

This is because the 'on' word is a reserved keyword for boolean TRUE. The documentation now states that a string that contains any non-alphanumeric character should be enclosed in double-quotes (a space is not alphanumeric).
Документацию читать надо
Профиль Ответить
12.03.2016 17:52:30 Нужна помощь. Сообщение #10
Vasse

Vasse

Новичок

Новичок

Дата регистрации:
07.03.2016 22:08:34

Сообщений: 7

Урааааа, огромное спасибо!!! А почему он ее не выдавал когда в файле было тока 2 строки, и причем я не куда не нажимал, появлялась сразу на заглавной странице? А есть какие нибудь идеи по регистрации пользователя? 
Еще раз огромное спасибо. А почему у Русакова все работало и он об этом не чего не говорил?
Профиль Ответить