Как создать простой сайт на php с использованием MySql базы данных?! Я расскажу вам Итак начнем........... Начало Для начала найдем хостинг с php и mysql (Лучше локалхост ) Двигаемся дальше........... Создание БД Заходим в mysql...............Создаем бд с именем 'site' Пишем sql код: Code: 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>" ); } ?>
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 должен быть в формате '[email protected]' "); } //==========================================================================// // Устанавливаем соединение с базой данных 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()); } }
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
$query = "SELECT COUNT(*) FROM users WHERE name = '$_POST[name]' AND pass = '$_POST[password]'"; инъекция
хм, не проще ли or die("<P>Сервер базы данных не доступен</P>")? не понимаю зачем использовать empty, когда можно и без него. PHP: if($_POST['name'] && $_POST['password']) зачем? 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
да) нашол сорец) ISBN 5-94157-837-7 "Головоломк на пшп для хакера", Максим Кузнецов, Игорь Симдянов. 2 nerezus у них бред пожестче, чем у фленова))) учат уходить от инъекций, и в своем коде дают их 10-20 )) ЗЫ плюс заработал, т.к. хотябы переработал их сорец)
боян... зачем учить делать сайт если есть много учебников по php. так - же море цмс-ок, в которых по шагам расписано как их установить. сугубо мое личное мнение
а те из ниоткуда взялись ? статья нормальная для общего ознакомления как, но код идет скорее во вред =\
насчет кодов =\ Каждый пишит сам и сам делает ошибки =\ тебе не надо было расписывать php-код, а так поверхностоно описать скрипт, а не полность выкладывать =\
Когда я учил пхп, я очень хотел найти хорошее объяснение тому что пишут.... Вот для таких как я был , я и написал))
я что то не понял, а сайт то твой только и умеет что зарегать пользователя, а потом вывести список их? А где новости? статьи? Гостевая? На сайт тут явно НЕ тянет. И еще, у тебя поначалу совсем нет никакого плана, ничего нет. Чтобы понять что твой сайт умеет пришлось всю статью читать. А был бы план сразу все видно было бы... Короче, не очень твоя статья. Не понравилось.
Вроде как написано "To be continued" ......... И вроде тема "простой сайт"... Посже напишу как сделать новости и комментарии.....