ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|
Создаем простой сайт на php |

20.03.2007, 16:11
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Создаем простой сайт на php
Как создать простой сайт на php с использованием MySql базы данных?!
Я расскажу вам
Итак начнем...........
Начало
Для начала найдем хостинг с php и mysql (Лучше локалхост  )
Двигаемся дальше...........
Создание БД
Заходим в mysql...............Создаем бд с именем 'site'
Пишем sql код:
Код:
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(30) collate utf8_unicode_ci NOT NULL,
`pass` tinytext collate utf8_unicode_ci NOT NULL,
`email` tinytext collate utf8_unicode_ci NOT NULL,
`icq` int(9) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
config.php
Создаём файл config.php - здесь поместим код соединения к бд, логин, таблицу, пасс и прочее
Например:
PHP код:
<?php
// Адрес сервера MySQL
$dbhost = "localhost";
// Имя пользователя базы данных
$dbuser = "root";
// и его пароль
$dbpass = "password";
// Имя базы данных, на хостинге или локальной машине
$dbname = "site";
$db = @mysql_connect($dbhost, $dbuser, $dbpass);
if (!$db) {
exit ("<P>Сервер базы данных не доступен</P>" );
}
if (!@mysql_select_db($dbname, $db)) {
exit( "<P>База данных $dbname не доступна</P>" );
}
?>
Последний раз редактировалось Isis; 21.03.2007 в 00:33..
|
|
|

20.03.2007, 16:13
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
index.php
Теперь создаём главную страницу сайта, а именно index.php.....
PHP код:
<?php
//Начинаем сессию
session_start();
?>
<html>
<head><title>Главная страница</title></head>
<body>
<?php
if(!session_is_registered('name')) {
echo "<a href='./register.php' title='Регистрация'>Регистрация</a><br /><hr />
<a href='./enter.php' title='Войти'>Войти</a><br /><hr />";
} else {
echo "Привет $_SESSION['name'] <br /><br /><a href='./enter.php?do=logout' title='Выход'>Выход</a><br /><hr />";
}
<a href='./users.php' title='Зарегистрированные пользователи'>Зарегистрированные пользователи</a><br />
</body>
</html>
register.php
Создаем страницу регистрации.....
Давайте сделаем обязательные поля :
name, pass, email
и простое поле icq .......
PHP код:
<html>
<head><title>Регистрация</title></head>
<body>
<form method="post">
<table>
<tr><td>Имя*:</td></tr>
<tr><td><input type="text" name="name" /></td></tr>
<tr><td>Пароль*:<br /><input type="password" name="pass" /></td><td style="width: 20;"> </td>
<td>Повторите пароль*:<br /><input type="password" name="repass" /></td></tr>
<tr><td>E-mail*:</td></tr>
<tr><td><input type="text" name="email" /></td></tr>
<tr><td>Icq:</td></tr>
<tr><td><input type=text name="icq" maxlength="9" /></td></tr>
<tr><td><input type="submit" title="Регистрация" name="reg" value="Регистрация" /></td></tr>
</table>
</form>
<?php
if($reg) {
//Защищаемся от скули
if (!get_magic_quotes_gpc()) {
$_POST['name'] = mysql_escape_string($_POST['name']);
$_POST['pass'] = mysql_escape_string($_POST['pass']);
$_POST['repass'] = mysql_escape_string($_POST['repass']);
$_POST['email'] = mysql_escape_string($_POST['email']);
$_POST['icq'] = mysql_escape_string($_POST['icq']);
}
// Проверяем, правильно ли заполнены обязательные поля
if(empty($_POST['name']) && !isset($_POST['name']))
exit ("Заполните поле 'Имя' ");
if(empty($_POST['pass']) && !isset($_POST['pass']))
exit("Заполните поле 'Пароль' ");
if(empty($_POST['repass']) && !isset($_POST['repass']))
exit("Заполните поле 'Повторите пароль' ");
if($_POST['pass'] != $_POST['repass'])
exit("Пароли не совпадают");
//Проверяем введеные данные в форму
if($_POST['icq']) {
if(!is_numeric($_POST['icq']))
exit("ICQ состоит из цифр :)");
if( strlen($_POST['icq']) < 5 || strlen($_POST['icq']) > 9)
exit("Поле 'ICQ' должно содержать от 5 до 9 символов");
}
// Проверяем email на соответствие
if($_POST['email']) {
if(!preg_match("|^[-0-9a-z_]+@[-0-9a-z_]+\.[a-z]{2,6}$|i", $_POST['email']))
exit("E-mail должен быть в формате 'billy@micrsoft.com' ");
}
//==========================================================================//
// Устанавливаем соединение с базой данных
require_once("config.php");
// Проверяем, не было ли переданное имя зарегистрировано ранее
$query = "SELECT COUNT(*) FROM `users` WHERE name = '$_POST[name]'";
$result = mysql_query($query);
if(!$result) exit("Ошибка - ".mysql_error());
if(mysql_num_rows($result) > 0) exit("Такое имя уже есть");
//Выполняем sql запрос на регистрацию юзера
$_POST['pass'] = md5($_POST['pass']);
$query = "INSERT INTO users VALUES(NULL, '$_POST[name]', '$_POST[pass]', '$_POST[email]', '$_POST[icq]')";
//Если регистрация прошла успешно, то перенаправляем на главную страницу
if(mysql_query($query)) {
echo "Регистрация успешно завершена";
header("Location: index.php");
} else {
exit("Ошибка при добавлении данных - ".mysql_error());
}
}
Последний раз редактировалось Isis; 21.03.2007 в 14:34..
|
|
|

20.03.2007, 16:14
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
enter.php
В этом файле разместим код авторизации пользователя
PHP код:
<?php
session_start();
?>
<form method='post'>
Имя : <br /><input type='text' name='name' value='$_SESSION[name]' /><br /><br />
Пароль : <br /><input type='password' name='password' value='$_SESSION[password]' /><br /><br />
<input type='submit' value='Войти' title='Войти' />
</form>
<?php
//Если поля не пустые, производим попытку входа
if($_POST['name'] && $_POST['password']) {
// Устанавливаем соединение с базой данных
require_once("config.php");
//Защищаемся от скули )
if (!get_magic_quotes_gpc()) {
$_POST['name'] = mysql_escape_string($_POST['name']);
$_POST['password'] = mysql_escape_string($_POST['password']);
} else {
$_POST['name'] = addslashes($_POST['name']);
$_POST['password'] = addslashes($_POST['password']);
}
//Заходим
$_POST['password'] = md5($_POST['password']);
$query = "SELECT COUNT(*) FROM users WHERE name = '$_POST[name]' AND pass = '$_POST[password]'";
$autnme = mysql_query($query);
if(!$autnme) exit("Ошибка");
// Получаем число записей
if(mysql_result($autnme, 0) > 0)
define("TOTAL", 1);
}
if(defined("TOTAL")) {
$_SESSION['name'] = $_POST['name'];
$_SESSION['password'] = $_POST['password'];
}
// Если посетитель "вошел" - перенаправляем его
if(isset($_SESSION['name']) && isset($_SESSION['password'])) {
header("Location: ../index.php");
} else {
echo("Неверный пароль");
header("Location: ../index.php");
}
//Если юзер выходит - удаляем сессию
if($_GET['do'] == 'logout'){
session_destroy();
header("Location: ../index.php");
}
users.php
Создаем файл users.php, где будут выводиться уже зарегистрированные пользователи...
PHP код:
<html>
<head><title>Пользователи</title></head>
<body>
// Устанавливаем соединение с базой данных
require_once("config.php");
$query = "SELECT * FROM `users` ORDER BY `id` ASC";
$result = mysql_query($query);
echo "<table style='border: 0px;'><tr>
<td style='width: 100px; text-align: center;' class='td'>Имя</td>
<td style='width: 100px; text-align: center;' class='td'>ICQ</td>
<td style='width: 150px; text-align: center;' class='td'>E-mail</td></tr>";
while($row = mysql_fetch_assoc($result)) {
echo "<tr><td class='td' style='width: 100px;'> <font style='font-weight: bold;'>$row[name]</font></td>";
if($row['icq'] != '0'){
echo "<td style='text-align: center;' class='td'><a href='http://www.icq.com/$row[icq]' target='_blank' title='Icq $row[name] $row[icq]'><font style='color: green; font-weight: bold;'>$row[icq]</font></a></td>";
} else {
echo "<td style='text-align: center;' class='td'><font style='color: red; font-weight: bold;'>---</font></td>";
}
echo "<td style='text-align: left;' class='td'><a href='mailto:$row[email]' title='Отправить e-mail $row[name]'>$row[email]</a></td>";
}
echo "</table>";
Ну что же....... To be continued
Последний раз редактировалось Isis; 21.03.2007 в 02:07..
|
|
|

20.03.2007, 16:26
|
|
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
Провел на форуме: 1325772
Репутация:
517
|
|
$query = "SELECT COUNT(*) FROM users WHERE name = '$_POST[name]' AND pass = '$_POST[password]'"; инъекция
|
|
|

20.03.2007, 16:27
|
|
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
Провел на форуме: 1325772
Репутация:
517
|
|
ЗЫ код до боли знаком.. щас посмотрю....
|
|
|

20.03.2007, 16:28
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Если есть дырки, пишите сразу как заковырять...
Спасибо)
|
|
|

20.03.2007, 16:28
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
if (!$db)
{
exit ("<P>Сервер базы данных не доступен</P>" );
}
if (!@mysql_select_db($dbname, $db))
{
exit( "<P>База данных не доступна</P>" );
}
хм, не проще ли or die("<P>Сервер базы данных не доступен</P>")?
if(!empty($_POST['name']) && !empty($_POST['password']))
не понимаю зачем использовать empty, когда можно и без него.
PHP код:
if($_POST['name'] && $_POST['password'])
if(isset($_SESSION['name']) && isset($_SESSION['password'])) {
echo "<html><head>
<meta HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
</head><body>";
}
зачем? header("Location: ..") быстрее и проще.
PHP код:
if(mysql_result($autnme, 0) > 0)
define("TOTAL", 1);
}
if(defined("TOTAL")) {
$_SESSION['name'] = $_POST['name'];
$_SESSION['password'] = $_POST['password'];
}
боже... а mysql_num_rows на что?
PHP код:
if(mysql_num_rows($result){
//
}
PHP код:
$numrows = mysql_num_rows($result);
хм... а не проще ли
PHP код:
while($row = mysql_fetch_assoc($result)){
//
}
а вообще я не вижу в статье смысла.. если кто знает пхп, для него это сделать не проблема. а те, кто его недостаточно знает и с этой статьей мало что сможет сделать)
+8
|
|
|

20.03.2007, 16:29
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
Если есть дырки, пишите сразу как заковырять...
просто это автоматом надо делать, все данные которые идут в БД делать в mysql_escape_string()
|
|
|

20.03.2007, 16:32
|
|
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
Провел на форуме: 1325772
Репутация:
517
|
|
да) нашол сорец) ISBN 5-94157-837-7
"Головоломк на пшп для хакера", Максим Кузнецов, Игорь Симдянов.
2 nerezus у них бред пожестче, чем у фленова))) учат уходить от инъекций, и в своем коде дают их 10-20  ))
ЗЫ плюс заработал, т.к. хотябы переработал их сорец)
|
|
|

20.03.2007, 16:34
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
Вообще, я хоть и не профи в пхп, но даже для меня код извращенский.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|