• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Проблеми с скриптом регистрации

  • Автор темы drag-andriy
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

drag-andriy

есть скрипт.проблема,не могу подключить к ниму базу
и глючит кроме весь.Помогите
<?


define("SCRIPTNAME", "бла-бла");
define("BASEHREF", "http://www.mysayt.com");
define("DOMAIN", "http://www.mysayt.com");
define("FROMEMAIL", "mail");
define("SITENAME", "http://www.mysayt.com");
define("INC_DIR", "http://www.mysayt.com/pas/inc/");
define("PAG_DIR", INC_DIR."pages/");// что ето

define("INC_DB", INC_DIR."db.php");

define("MYSQLUSER", "наме"); // mysql username
define("MYSQLPASS", "пас"); // mysql password
define("MYSQLDB", "user"); // mysql database name

require(INC_DB);//здесь ошибка

?>
require(INC_DB);//здесь ошибка
не могу разобраться как подключить функцию из
/db.php(функуия Db_dis)
 
M

maykoff

Для: drag-andriy

Код:
require(INC_DB);
здесь ты пытаешься подключить файл, но константа INC_DB не определена, поэтому преобразуется в строку с именем этой константы. Естественно, что файла "INC_DB" у тебя нет.

не могу разобраться как подключить функцию из
/db.php
Подключаешь файл - подключаются все функции, определённые в этом файле, но из этой записи следует, что ты пытаешься подключить файл, лежащий в КОРНЕ СЕРВЕРА. При нормальных настройках сервера - тебе это не удастся, недостаточно прав. Файл должен находиться там, где он бкдет доступен
 
D

drag-andriy

Так я подключаю файл с функциями
Код:
include_once('./db.php');
потом хочу выполнить фунцию ,скажем, db_conect
Код:
db_conect();
ето верно???
 
M

maykoff

Верно.
Если функция определена в подключаемом файле, то она автоматически доступна во всём скрипте.
 
D

drag-andriy

Для: maykoff
Опять столкнулся с проблемой.Изначально у меня был ХТМЛ,поменял на ПХП.Хочу на страницу добавить, чтобы отображался пользователь, код добавляю так, вставляю строчку,там где хочу
Код:
<?PHP
include_once('./наме.php');
?>

Код:
<?	session_start();

$uid = $_SESSION['uid'];
$pwd = $_SESSION['pwd'];

require('main.php');

mysql_connect(Hostname, MYSQLUSER,MYSQLPASS) or die("... " . users);

// базу 
mysql_select_db(users) or die(".. " . users);


error_reporting(E_PARSE);



if ($uid){

echo $uid ;

}



function db_disconnect()
{
global $db;

if ($db)
{
mysql_close($db);
$db = NULL;
}
}

?>
Вот,оно добавляет,польз отображается,но
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /ххх/ххх/ххх/www/indexa.php:6) in /home/ххх/data/www/ххх/verifi.php on line 1
 
M

maykoff

session_start работает следующим образом - в браузер отправляется идентификатор сессии (вроде куки), который показывает скрипту, где на сервере искать сохранённую сессию.
Обязательное условие - он (идентификатор) должен быть отправлен в заголовке, то есть ДО ВЫВОДА HTML.
код типа
Код:
	 <? session_start(); 
...
...?>
<html>
<head>
...
...

работать НЕ БУДЕТ, потому что перед открывающим тегом <? стоит пробел, и он до вызова функции session_start() УЖЕ ОТПРАВЛЕН

ошибка как раз об этом говорит -
Cannot send session cache limiter - headers already sent (output started at ...
- невозможно отправить идентификатор сессии - заголовки уже отправлены (вывод стартовал в <место ошибки>

Стартуй сессию до любого вывода.

Если у тебя скрипт, где сессия стартует, подключается в другом скрипте - то следует проверить отсутствие вывода до старта сессии в обоих скриптах. А вообще - это очень дурной стиль программирования. Как минимум, следует разделять обработку и вывод данных, хотя бы так:
Код:
<?php
//обработка данных, формирование переменных для вывода
$var = 'превед!';
?>
<html>
<head><title>превед</title></head>

<body>
<!-- выводимые данные -->
<?=$var?>
</body>
</html>
А ещё лучше - пользуйся шаблонизаторами.
 
D

drag-andriy

maykoff
А ещё лучше - пользуйся шаблонизаторами.
может подскажеш,какими.Стоит задача,надо СМИ.никакой нормальной я не нашел.остановилса на простенькой,без регистр,работаєт без БД.
Потом решил доработать регистр.нашел скрипт(сам я пока в ПХП ламер :p ;),но ето пока!!!)
Тут полезло,нихр***на не работает.тут я давай литературу на виходних штубить.Кароче вивод такой,ПХП-респектуха ;) и уважуха ;).
вернемся к теме,Скрипт работает на mysql,базу зделал,ето не проблема.ну і взял за основу скрипт и начал встраевать в СМИ.получилось вивести нейм юзера,к стати,
Код:
session_start();
я подавил
Код:
error_reporting(E_PARSE);
,сначала просто ставил в начало
,но мозилла ричала,потом доступ к фулнюз зделал только зарегистр.польз.но тут думаю ошибку зделал.к каждому обращунию на ссилку фулнюз,идет проверка в БД юзера.ето ничево при 10-20,а эсли 1000???тут и задумалса,тем ли путем иду.но ничего,буду осваевать ПХП.жде критики :(
 
M

maykoff

Шаблонизатор я использую smarty, но для простого сайта в этом смысла нет особого, можно просто отделить код php от html как я показал. Ну или инклюдить html из другого файла.

@ - не убирает ошибку, а просто пресекает вывод сообщения об ошибке в случае её возникновения.
Такой подход годится, когда ты понимаешь все последствия возникшей ошибки и то, насколько этот оператор тормозит скрипт.
например:
Код:
$str = '';//объявлена переменная
$str = @$_POST['str'];//если в post что-то есть - то переменная заполняется
if($str) {...}//если переменная не пуста или не			  нулевая - то...
В твоём случае, как мне кажется, ты просто подавил вывод ошибки, не устранив её причину.
 
R

romy4

Для: drag-andriy
ты разобрался с подключением?
 
D

drag-andriy

Да с, разобрался с подключением.
тут по ходу дела куча непонимаемих мною вещей в меру редактирования скриптов.щас сиджу,разбираюсь
 
R

romy4

не делай так
$str = @$_POST['str'];//если в post что-то есть - то переменная заполняется

$str = isset($_POST['str']) ? $_POST['str'] : '';

подавление ошибок - это не избежание ошибки. Тем более, что "собака" довольно замедляет скрипт, если $_POST['str'] индекс отсуствует.
 
D

drag-andriy

Есть проверка, файл ver.php
Код:
<?


require('same.php');

session_start();

if (!isset($_SESSION['uid'])) {
$_SESSION['uid'] = $_REQUEST['uid'];
$_SESSION['pwd'] = $_REQUEST['pwd'];
}

$uid = $_SESSION['uid'];
$pwd = $_SESSION['pwd'];

db_connect();

$res = mysql_query("SELECT * FROM users WHERE uid='$uid' AND pwd='$pwd' and status='active'");
$re = mysql_fetch_array($res);

if ($uid){

echo "Пользователь: ".$uid;

}
else {

include(INC_DIR."login.php");
unset($_SESSION['uid']);
unset($_SESSION['pwd']);



}


db_disconnect();




?>
работает.Пробую встроить в index.php
Код:
<?PHP

include("./ver.php");
?>

<html>

<head>
<title></title>
</head>

<body>

<?PHP
if($uid)
{echo "Пользователь: ".$uid;
} else
{include(INC_DIR."login.php");
}

?>

</body>

</html>
И тут рычит!!!
Ошибок нет,но вставляет login.php
 
D

drag-andriy

если перейти mysayt/ver.php
работает!!!пробовал з логином-показивает логин
без показивает станицу login.php
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!