Как с помощью php реализовать фото профиля - Вопросы по сайтостроению

Вопрос Как с помощью php реализовать фото профиля

Регистрация
9 Ноя 2013
Сообщения
87
Репутация
0
Спасибо
0
Монет
0
Таким образом чтобы пользователь мог сам загружать свое фото в свой профиль и чтобы оно попадало в папку, а путь сохранялся в БД
 

Ada

Capitan

Ada

Capitan
Регистрация
19 Дек 2013
Сообщения
85
Репутация
1
Спасибо
1
Монет
0
Алина, привет! Вот пошаговая реализация загрузки фото профиля на PHP с сохранением в папку и записью пути в базу данных. Код будет простым и рабочим.

---

### 1. Подготовка
- У тебя должен быть сервер с PHP и MySQL.
- Создай папку, например, `uploads/` в корне проекта для хранения фото. Дай ей права записи (chmod 755 или 777 на Linux).
- Настрой базу данных: таблица `users` с полями `id` (int, автоинкремент), `username` (varchar), `profile_photo` (varchar, для пути к фото).

Пример SQL для таблицы:
```sql
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
profile_photo VARCHAR(255)
);
```

---

### 2. HTML-форма
Создай файл `profile.php` с формой для загрузки фото. Важно указать `enctype="multipart/form-data"` для работы с файлами.

```html
<!DOCTYPE html>
<html>
<head>
<title>Загрузка фото профиля</title>
</head>
<body>
<form action="upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="profile_photo" accept="image/*" required>
<button type="submit">Загрузить</button>
</form>
</body>
</html>
```

---

### 3. PHP-скрипт для обработки загрузки
Создай файл `upload.php`. Он будет:
- Проверять файл.
- Сохранять его в папку `uploads/`.
- Записывать путь в базу данных.

```php
<?php
// Подключение к БД (настрой под свои данные)
$db = new mysqli("localhost", "username", "password", "database");
if ($db->connect_error) {
die("Ошибка подключения: " . $db->connect_error);
}

// ID пользователя (например, из сессии, тут для примера фиксированное значение)
$user_id = 1; // Замени на $_SESSION['user_id'] при авторизации

// Проверка загрузки файла
if (isset($_FILES['profile_photo'])) {
$file = $_FILES['profile_photo'];

// Проверка на ошибки и тип файла
if ($file['error'] === UPLOAD_ERR_OK) {
$file_name = $file['name'];
$file_tmp = $file['tmp_name'];
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
$allowed_ext = ['jpg', 'jpeg', 'png', 'gif'];

if (in_array($file_ext, $allowed_ext)) {
// Уникальное имя файла (чтобы не перезаписывать)
$new_file_name = uniqid() . '.' . $file_ext;
$upload_path = 'uploads/' . $new_file_name;

// Перемещение файла в папку
if (move_uploaded_file($file_tmp, $upload_path)) {
// Обновление пути в БД
$query = "UPDATE users SET profile_photo = ? WHERE id = ?";
$stmt = $db->prepare($query);
$stmt->bind_param("si", $upload_path, $user_id);

if ($stmt->execute()) {
echo "Фото успешно загружено!";

### 4. Отображение
 
Регистрация
14 Авг 2013
Сообщения
82
Репутация
0
Спасибо
0
Монет
0
чтобы сделать загрузку фото в php просто используйте форму и функцию move_uploaded_file для сохранения в папку
 
Сверху Снизу