Задать вопрос
@ID141006628

Добавление аватара при регистрации PHP + Mysqli?

Проблема с регистрацией, регистрируя пользователя, с формы передаю значения: пароль, номер телефона и полое имя, скрип обрабатывает и записывает в базу, с этим понятно, но как мне добавить аватарку? Прилагаю скрин скрипта, проблема в том что он добавляет аватар по id а как я его получу если регистрация еще не прошла и записи даже еще нет в базе и соответственно id тоже.
Короче говоря как мне получить ID юзера которая я создаю в реальном времени?
Мб глупый вопрос но это мой первый сайт, извиняюсь.
5b0c2bb29722c723478940.png
if(isset($_POST["submit_add_profile"])){
		
		$id = $_SESSION['id'];
	
		if (isset($_FILES['fupload']['name'])) //отправлялась ли переменная
			{
			if (empty($_FILES['fupload']['name']))
			{
			$avatar = "uploads/images/avatars/no-avatar.png";
			$result7 = mysqli_query($mysqli,"SELECT src_avatar FROM users WHERE id='$id'");//извлекаем текущий аватар
			$myrow7 = mysqli_fetch_array($result7);
			if ($myrow7['avatar'] == $ava) {//если аватар был стандартный, то не удаляем его, ведь у на одна картинка на всех.
			$ava = 1;
			}
			else {unlink ($myrow7['avatar']);}//если аватар был свой, то удаляем его, затем поставим стандарт
			}
			else
			{
			$path_to_90_directory = 'uploads/images/avatars/';//папка, куда будет загружаться начальная картинка и ее сжатая копия
	  
		if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения
			{ 
			   
			$filename = $_FILES['fupload']['name'];
			$source = $_FILES['fupload']['tmp_name'];  
			$target = $path_to_90_directory . $filename;
			move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory
	 
		if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
			$im = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
			}
			if(preg_match('/[.](PNG)|(png)$/', $filename)) {
			$im = imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
			}
	   
		if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
			$im = imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
		}

		$w = 100;  // ширина картинки
		$h = 100; //высота картинки

		$w_src = imagesx($im);
		$h_src = imagesy($im);
	 
			 $dest = imagecreatetruecolor($w,$h);
	 
			 if ($w_src>$h_src)
			 imagecopyresampled($dest, $im, 0, 0,
							  round((max($w_src,$h_src)-min($w_src,$h_src))/2),
							  0, $w, $h, min($w_src,$h_src), min($w_src,$h_src));
	 
			 if ($w_src<$h_src)
			 imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $h,
							  min($w_src,$h_src), min($w_src,$h_src));
	 
			 if ($w_src==$h_src)
			 imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $h, $w_src, $w_src);
			 
	 
		$date=time();
		imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.
		 
		$avatar = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.
		 
		$delfull = $path_to_90_directory.$filename;
		unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
		 
		$result7 = mysqli_query($mysqli,"SELECT src_avatar FROM users WHERE id='$id'");//извлекаем текущий аватар пользователя
		$myrow7 = mysqli_fetch_array($result7);
		 
		if ($myrow7['avatar'] == $ava) {//если он стандартный, то не удаляем его, ведь у нас одна картинка на всех.
		$ava = 1;
		}
		else {unlink ($myrow7['avatar']);}//если аватар был свой, то удаляем его
	}
	else
		{
		//в случае несоответствия формата, выдаем соответствующее сообщение
		exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>");
		}
	}
	 
		$result4 = mysqli_query($mysqli,"SELECT src_avatar FROM users WHERE id='$id'");//обновляем аватар в базе
		if ($result4=='TRUE') {//если верно, то отправляем на личную страничку
		echo "<html><head><meta http-equiv='Refresh' content='5; URL=page.php?id=".$_SESSION['id']."'></head><body>Ваша аватарка изменена! Вы будете перемещены через 5 сек. Если не хотите ждать, то <a href='page.php?id=".$_SESSION['id']."'>нажмите сюда.</a></body></html>";}
	}  
		
		mysqli_query($mysqli,"INSERT INTO users SET full_name='".mysqli_real_escape_string($mysqli,$_POST['FullName'])."', password='".mysqli_real_escape_string($mysqli,$_POST['Password'])."', telephone='".mysqli_real_escape_string($mysqli,$_POST['Telephone'])."', access_level='".mysqli_real_escape_string($mysqli,$_POST['Access_level'])."'");
		
		header("Location: ");
    }
  • Вопрос задан
  • 1524 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Mysterion
$last_insert_id = mysql_insert_id();
После запроса INSERT INTO.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
rim89
@rim89
программист-велосипедист
- Добавлять аватар после создания юзера
- Сделать добавление аватара вторым шагом регистрации
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы