Обучение/Помощь новичкам | Помощь по OpenServer
DELETED
Автор
3 ноября 2015, в 16:33
Delete
/*
* Автор: Евгений
* http://bym.guru/id17706
*/
$db_host = 'localhost' ; /// хост
$db_user = 'sever_699_sev'; ///пользователь
$db_pass = 'zadira24'; ///пароль
$db_name = 'sever_699_sev'; ///база
try{
$db = new PDO("mysql:host=$db_host;dbname=$db_name",$db_user,$db_pass);
}
catch(PDOException $e){
die('Нет соединения с базой данных');
}
$db->exec("set names utf8");
session_start();
ob_start();
///Cookie
if(isset($_COOKIE['login']) and isset($_COOKIE['password'])){
$login = htmlspecialchars(trim($_COOKIE['login']));
$password = htmlspecialchars(trim($_COOKIE['password']));
$user = $db->prepare("SELECT * FROM `users` WHERE `login` = ? and `password` = ?");
$user -> execute([$login,$password]);
$user = $user->fetch(PDO :: FETCH_ASSOC);
if(!isset($user['id'])){
setcookie('login', '');
setcookie('password', '');
$_SESSION['result'] = 'Ошибка авторизации по Cookie';
header('Location: /');
exit;
}
}
function page($k_page=1){
$page=1;
if (isset($_GET['str'])){
if ($_GET['str']=='end')$page=intval($k_page);elseif(is_numeric($_GET['str'])) $page=intval($_GET['str']);}
if ($page<1)$page=1;
if ($page>$k_page)$page=$k_page;
return $page;}
function k_page($k_post=0,$k_p_str=20){
if ($k_post!=0){$v_pages=ceil($k_post/$k_p_str);return $v_pages;}
else return 1;}
function str($link='?',$k_page=1,$page=1){
?><div class="block"><?
if ($page<1)$page=1;
if ($page!=1)?><a href="<?=$link;?>str=1"> <span class="pag"> «</span></a><?
if ($page!=1){?><a href="<?=$link;?>str=1"> <span class="pag"> 1</span></a><?}else{ ?><span class="pag">1</span><?
}
for ($ot=-3; $ot<=3; $ot++){
if ($page+$ot>1 && $page+$ot<$k_page){
if ($ot!=0){?><a href="<?=$link;?>str=<?=($page+$ot);?>"> <span class="pag"> <?=($page+$ot);?></span></a><?}else{?><span class="pag"> <?=($page+$ot);?></span><?
}
}
}
if ($page!=$k_page){?><a href="<?=$link;?>str=end"><span class="pag"><?=$k_page;?></span></a><?}elseif ($k_page>1){?><span class="pag"><?=$k_page;?></span><?
}
if ($page!=$k_page){
?><a href="<?=$link;?>str=end"> <span class="pag"> »</span></a><?
}
?></div><?
}
if(isset($user['id'])){
$on = $db->prepare("UPDATE `users` SET `online` = ? WHERE `id` = ?");
$on -> execute([time(),$user['id']]);
///Система регенерации
$regen = $db->prepare("UPDATE `users` SET `fight` = `fight` + ?, `time_regen` = ? WHERE `fight` < `fight_max` and `time_regen` < ?");
$regen -> execute([1,time()+600,time()]);
$T_regen = $db->prepare("UPDATE `users` SET `time_regen` = ? WHERE `fight` = `fight_max`");
$T_regen -> execute([time()+600]);
$hp_up = $db->prepare("UPDATE `users` SET `hp` = ? WHERE `hp` < ?");
$hp_up -> execute([0,0]);
////Система опыта
$exp = array("2"=>"10","3"=>"50","4"=>"70","5"=>"120","6"=>"200","7"=>"250","8"=>"340","9"=>"400","10"=>"500","11"=>"650","12"=>"700","13"=>"900","14"=>"1100","15"=>"1500");
$exp_n = $exp[$user['level']+1];
if($user['exp'] >= $exp_n and isset($user)){
$levelUP = $db->prepare("UPDATE `users` SET `dol` = ?, `exp` = ?, `level` = ? WHERE `id` = ?");
$levelUP -> execute([$user['dol']+100,0,$user['level']+1,$user['id']]);
$_SESSION['result'] = 'Ты получил новый уровень! И подгон от братвы в размере 100 <img src="/design/img/dollar.png">';
header('Location: /');
exit;
}
}
function nick($id){
global $db;
$nick = $db->prepare("SELECT * FROM `users` WHERE `id` = ?");
$nick -> execute([$id]);
$nick = $nick -> fetch(PDO :: FETCH_ASSOC);
$role = array('moderator'=>'<font color="green">[МД]</font>','administrator'=>'<font color="red">[Адм]</font>');
?><a href="/p/<?=$id;?>/"> <img src="/design/img/profile.png"> <?=$nick['login'];?> <?=$role[$nick['role']];?></a><?
}
$ban_us = $db->prepare("SELECT * FROM `ban` WHERE `user` = ?");
$ban_us -> execute(array($user['id']));
$bans = $ban_us -> fetch(PDO :: FETCH_ASSOC);
$db->query("DELETE FROM `ban` WHERE `time` < '".time()."'");
if(isset($bans['id'])){
$title['page'] = 'Бан';
require ('head.php');
?><div class="toptitle"> Вы забанены</div>
<div class="box2"><img src="/design/img/ban.jpg"></br> Вы забанены! </br>Причина: <?=$bans['text'];?></br>Осталось: <?=intval(abs(($bans['time'] - time())/3600));?> час. <?=intval(abs(($bans['time'] - time())/60%60));?> мин.</br> Забанил: <?=nick($bans['adm']);?></div><?
require ('foot.php');
exit;
}
?>
17 строка это session_start();
смотрим ошибку на скрине помогаем ребята
session_start() посылает http заголовки (headers). Они должны идти вперед любого кода html. Решение - ставь session_start выше своего кода
Причем тут Open server? Проблема в этом нубо коде.
Функция session_start() должна стоять в начале кода, до любых "echo", до вывода какого либо текста браузеру. Там вроде перед ними стоит, тогда возможно проблема в кодировке файлы. В Notepad++'е бывает иногда такое, попробуй поставить UTF-8 без BOM, выдели текст, скопируй, удали и вставь
Функция session_start() должна стоять в начале кода, до любых "echo", до вывода какого либо текста браузеру. Там вроде перед ними стоит, тогда возможно проблема в кодировке файлы. В Notepad++'е бывает иногда такое, попробуй поставить UTF-8 без BOM, выдели текст, скопируй, удали и вставь
DELETED
Автор
4 ноября 2015, в 12:34
Delete
Севериан (04.11.2015 в 12:34)
198378708 , код верный на хосте не выдает ошибок установил на опен сервер все работает но выдает это верху
198378708 , код верный на хосте не выдает ошибок установил на опен сервер все работает но выдает это верху
Там вроде перед ними стоит, тогда возможно проблема в кодировке файлы. В Notepad++'е бывает иногда такое, попробуй поставить UTF-8 без BOM, выдели текст, скопируй, удали и вставь
Ты только первое предложение читал??
Севериан , код верный и выдает ошибку? :D Просто хост у тебя отключает показ некоторых ошибок, в то время как опенсервер выдает все.
тебе выдает обычный варнинг, их можно отключить.
в хетач введи php_value error_reporting 1 или непосредственно в файл <?php error_reporting( E_ERROR ); ?>
warning и notice ошибочки исчезнут. но так делать нельзя, надо избавляться от них и писать грамотный код, а не тот ужас что выше
________
посл. ред. 04.11.2015 в 12:37; всего 1 раз(а); by Dizzy221
тебе выдает обычный варнинг, их можно отключить.
в хетач введи php_value error_reporting 1 или непосредственно в файл <?php error_reporting( E_ERROR ); ?>
warning и notice ошибочки исчезнут. но так делать нельзя, надо избавляться от них и писать грамотный код, а не тот ужас что выше
________
посл. ред. 04.11.2015 в 12:37; всего 1 раз(а); by Dizzy221
DELETED
Автор
4 ноября 2015, в 12:46
Delete
DELETED
Автор
5 ноября 2015, в 16:06
Delete
Севериан , госпади тебе уже ответили. 4 и 6 пост читай и вникай. Кодировка файла utf-8 без BOM, до объявления старта сессий не должно быть НИЧЕГО, даже пробела. Только в этом случае не возникнит варнинга что хеадер уже был передан.
НО в случае если ты упрямо хочешь говнокодить - отключай показ ошибок, код будет работать и с такими предупреждениями, не показывая их
________
посл. ред. 05.11.2015 в 16:15; всего 1 раз(а); by Dizzy221
НО в случае если ты упрямо хочешь говнокодить - отключай показ ошибок, код будет работать и с такими предупреждениями, не показывая их
________
посл. ред. 05.11.2015 в 16:15; всего 1 раз(а); by Dizzy221
DELETED
Автор
5 ноября 2015, в 16:15
Delete
Стр.: 1, 2