Вводная книга по PHP пример базовой социальной сети Robin’s Nest

#php #mysql #mysqli

#php #mysql #mysqli

Вопрос:

Я полный новичок и читаю «Изучение PHP, MySQL, JavaScript и CSS» Робина Никсона, и в конце есть пример под названием «Гнездо малиновки«, который

Проектирование сайта социальной сети
Прежде чем писать какой-либо код, я сел и составил список вещей, которые, по моему мнению, были необходимы для такого сайта. К ним относятся:

  • Процесс регистрации
  • Форма входа в систему
  • Средство выхода из системы
  • Управление сеансом
  • Профили пользователей с загруженными эскизами
  • Каталог участников
  • Добавление пользователей в друзья
  • Публичные и личные сообщения между участниками
  • Как оформить проект

Я решил назвать проект Robin’s Nest, но вам нужно изменить только одну строку кода (в functions.php ), чтобы изменить это на имя по вашему выбору.

Я хотел бы попробовать проверить это, но не знаю, как это сделать. Файлы кода примера размещены на OReilly. Кроме того, на Github есть его улучшенная версия.

Может кто-нибудь, пожалуйста, дайте мне знать, как я могу открыть и поиграть с ними? Какую конфигурацию мне нужно изменить и нужно ли сначала создать базу данных? Я только что скачал версию Github и сделал следующее, чтобы congif.php и создал пустую базу данных в phpmyadmin:

 <?php //config.php

$appname = 'Parrot';

$dbhost = 'localhost';
$dbname = 'parrot';
$dbuser = 'root'; 
$dbpass = 'mysql';

$home_url = '/';
 

пустая база данных parrot

Когда я получаю доступ к index.php на моих ampps / www я получаю:

 Warning: mysqli::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] in C:Program FilesAmppswwwparrotinit.php on line 6

Warning: mysqli::__construct(): (HY000/2054): The server requested authentication method unknown to the client in C:Program FilesAmppswwwparrotinit.php on line 6
The server requested authentication method unknown to the client
 

Строка 6 из init.php является

 $connection = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
 

Комментарии:

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

2. 🐘 Если вы только начинаете работать с PHP и хотите создавать приложения, я бы настоятельно рекомендовал изучить различные фреймворки разработки , чтобы увидеть, сможете ли вы найти тот, который соответствует вашему стилю и потребностям. Они бывают разных видов: от легких, таких как Fat-Free Framework , до гораздо более полных, таких как Laravel . Они дают вам конкретные примеры для работы и рекомендации по написанию кода и организации файлов вашего проекта.

3. @tadman Я просто новичок и не ищу передовой практики, просто учусь. Можете ли вы помочь мне довести этот пример до конца?

4. Первый шаг: справедливо ли это для тривиальных программ на PHP или только для тех, которые обращаются к базе данных? Второй шаг: имеет ли какой-либо доступ к базе данных за пределами PHP такую же задержку?

5. Тривиальный , поскольку почти никакой код не поможет сузить проблему. Не тестируйте загрузку чего-то, что на самом деле содержит в себе кучу операций.

Ответ №1:

Вам нужно установить пользователя и пароль.

 // config.php
<?php

$appname = 'Parrot';

$dbhost = 'localhost';
$dbname = 'parrot';
$dbuser = getenv('LOCAL_DB_USER'); // HERE
$dbpass = getenv('LOCAL_DB_PASS'); // HERE

$home_url = '/';
 

Это настройки среды. Вы также можете просто использовать свои строки напрямую.

 // config.php
<?php

$appname = 'Parrot';

$dbhost = 'localhost';
$dbname = 'parrot';
$dbuser = "USER"; // HERE
$dbpass = "PASSWORD"; // HERE

$home_url = '/';
 

Комментарии:

1. спасибо, поэтому я меняю $dbuser = ‘root’; и #dbpass = ‘mysql’; если это значение по умолчанию? Как насчет $dbname = ‘parrot’? Нужно ли мне сначала создать базу данных с именем ‘parrot’ на phpmyadmin?

2. @caltonhill или измените $dbname на db по вашему выбору

3. @Strawberry, это не сработало, потому что порт для ampps mysql установлен на 3307, поскольку у меня есть другой mysql на 3306. Теперь я добавил $port= ‘3307’ к вызову mysqli, и он работает.