В общем есть такой код для регистрации пользователя для базы данных и тп манипуляций. Код (Text): <!DOCTYPE html> <html> <meta charset="utf8"> <title>Страница регистрации пользователя</title> <body> <?php //Инициализация константы содержащий имя каталога //для загружаемых фоток //то есть создаем константу для папки images //которая находится в корневой папки сайта define('GW_UPLOADPATH','images/'); //Создаем константу для подключения к баззе данных,имя хостинга меняем на константу define('DB_HOST','localhost'); //Создаем константу логин для подклюмения к базе define('DB_USER','root'); //Создаем константу чтобы постоянно не воодить имя базы даных define('DB_NAME','questionnaire'); // Проверяем сценарий нажали ли кнопку отправить,чтобы ошибка постоянно не выводилась if(isset($_POST['submit']))// Проверяем кнопку сабмит чтобы вернуть если что форму { //Передаем данные введеные с формы из глобального массива $_POST[] //в отдельные переменные $firstname=$_POST['firstname']; $lastname=$_POST['lastname']; $sex=$_POST['sex']; $old=$_POST['old']; $growth=$_POST['growth']; $weight=$_POST['weight']; $profession=$_POST['profession']; $hobby=$_POST['hobby']; $family=$_POST['family']; $children=$_POST['children']; $information=$_POST['information']; $email=$_POST['email']; $images=$_FILES['images']['name'];//Вытаскиваем из массива название файла фото //Массив $_FILES['имя в форме']['имя загружаемого файла'] //Сохраняем значение типа файла фото в переменную //Сохраняем значение размера файла фото в переменную $images_type=$_FILES['images']['type'];//тип файла $images_size=$_FILES['images']['size'];//размер файла if((!$images_type=='image/gif') || (!$images_type=='image/jpeg') || (!$images_type=='image/png')) { echo 'Фото необходимо только указанных форматов'; } else { $target=GW_UPLOADPATH.$images; //Прописываем новый путь где GW_UPLOADPATH это папка images //а переменная images показывает что в папке images находится move_uploaded_file($_FILES['images']['tmp_name'],$target); //Перемещаем загружаемый файл(фото) из временного хранилища //Для этого используем функцию указанную выше } $output_form=false;// Флажок переменная для запуска формы HTML //Устанавливаем проверку на подлинность введеных данных что они не пустые //И если данные введены правильно подключаемся к базе если нет то выводим сообщение об ошибке //Вводи данных в базу если все заполнил кроме фотки if((!empty($firstname)) && (!empty($lastname)) && (!empty($sex)) && (!empty($old)) && (!empty($growth)) && (!empty($weight)) && (!empty($profession)) && (!empty($hobby)) && (!empty($family)) && (!empty($children)) && (!empty($information)) && (!empty($email))) { //Устанавливаем соединение с сервером базы данных $dbc = mysqli_connect(DB_HOST,DB_USER,'',DB_NAME) or die ('Ошибка соединения с MYSQL сервером'); // Создаем SQL строку запроса для внесения информации в таблицу $query = "INSERT INTO acquaintances (firstname,lastname,sex,old,growth,weight,profession,hobby,family,children,information,email,images) " . "VALUES ('$firstname','$lastname','$sex','$old','$growth','$weight','$profession','$hobby','$family','$children','$information','$email','$images')"; // Непосредственно запускаем функцию запроса к базе $result = mysqli_query($dbc,$query)//аргументы функции соединение с сервером и срока запроса or die ('Ошибка при выполнении запроса к баззе данных'); // Закрытие канала связи с сервером базы данных mysqli_close($dbc); echo "<h2>Вы зарегистрированы </h2>"; $output_form=true; } // Если хотя бы одно значение не заполненно в форме if((empty($firstname)) || (empty($lastname)) || (empty($sex)) || (empty($old)) || (empty($growth)) || (empty($weight)) || (empty($profession)) || (empty($hobby)) || (empty($family)) || (empty($children)) || (empty($information)) || (empty($email))) { echo 'Вы не полностью заполнили форму'."<br>";//Соббщение о том что какой пунт формы не заполнил $output_form=true; } }// Конец работы тела функции если форма переданна else { $output_form=true;////Запускаешь флажок на показ HTML формы для заполнения } if($output_form)//Это флажок запускающий форму {//вместе эчо убираем тупо знаки скрипта ?> <!-- Энктипе устанавливает специальное кодирование при загрузке изображений --> <form enctype="multipart/form-data" action = "<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="524288"/><!--Устанавливает максимальный размер файла для загрузки --> <ul> <h5>Введите пожалуйста свои данные для регистрации</h5> <ul> <li>Фото профиля:до 0,5 мб,форматы jpeg,png,gif<input type = "file" id="images" name = "images"/></br></li> <li>Имя:<input type = "text" name = "firstname" value = "<?php echo $firstname; ?>"/></li> <li>Фамилия:<input type = "text" name = "lastname" value = "<?php echo $lastname; ?>"/></li> <li>Пол:муж<input type="radio" name="sex" value="man"/> жен<input type = "radio" name = "sex" value = "woman"/></br></li> <li>Ваш возраст:<input type="number" name="old" min="0" max="120"></li> <li>Рост: см<input type = "number" name = "growth" min="0" max="250"/></li> <li>Вес: кг<input type = "number" name = "weight" min="0" max="5000"/></li> <li>Профессия:<input type = "text" name = "profession" value = "<?php echo $profession; ?>"/></li> <li>Хобби:<input type = "text" name = "hobby" value = "<?php echo $hobby; ?>"/></li> <li>Брак:Женат\Замужем<input type="radio" name="family" value="married" /> Одинок\ОдинокаЖенат\Замужем<input type="radio" name="family" value="lonely" /></li> Все сложно<input type="radio" name="family" value="hard" /></br> <li>Дети:есть:<input type="radio" name="children" value="yeas"/> нету:<input type="radio" name="children" value="no"/></li> <li>Дополнительная Информация:</li><textarea name = "information" rows="10" cols="48" value="<?php echo $information; ?>"/></textarea> <li>Адрес электронной почты:<input type = "email" name = "email" value = "<?php echo $email; ?>"/></li> <li><input type = "submit" name='submit'/></li> </ul> </form> <?php ;} ?> </body> </html> Вот именно в этой части кода условие иф не срабатывает где может быть ошибка логики или что то еще? Код (Text): $images=$_FILES['images']['name'];//Вытаскиваем из массива название файла фото //Массив $_FILES['имя в форме']['имя загружаемого файла'] //Сохраняем значение типа файла фото в переменную //Сохраняем значение размера файла фото в переменную $images_type=$_FILES['images']['type'];//тип файла $images_size=$_FILES['images']['size'];//размер файла if((!$images_type=='image/gif') || (!$images_type=='image/jpeg') || (!$images_type=='image/png')) { echo 'Фото необходимо только указанных форматов'; } else { $target=GW_UPLOADPATH.$images; //Прописываем новый путь где GW_UPLOADPATH это папка images //а переменная images показывает что в папке images находится move_uploaded_file($_FILES['images']['tmp_name'],$target); //Перемещаем загружаемый файл(фото) из временного хранилища //Для этого используем функцию указанную выше } И последний самый важный вопрос Этот код будет расти при создании к примеру небольшого сайта знакомств или тп . сайта Можно ли этот код превратить в ООП если да, то просто в каком направлении нужно двигаться статья или что то в этом роде подскажите опытные разработчики
@Рихард, перечитайте статью "Приоритет выполнения операторов" Обратите внимание на оператор отрицания (!) и сравнения (==, !=, ===, !===) --- Добавлено --- Ещё определитесь с использованием логическоих операторов && (и) и || (или). Хотите, чтобы код в ветке if отрабатвал при выполнении одного из условий, или всех сразу?
пришел сюда написать название кода Г О В Н О К О Д. по сути: у тебя валидации всего всех про все - унылое. извне принимаем данные от кого/чего - либо и тут же без экранирований, пихаем все в бд. Это как девушка говорит парню - становить раком, сейчас покажу где раки зимуют. а что с валидацией фоток и прочее скину ссыль, там дальше думай юзать/нет. Так как с валидацией на уровне типа файла у тебя пусто. https://github.com/MouseZver/My-garbage-code/blob/master/upload_class/Upload.php
п про валидацию и все проверки я в курсу ,тут 1% не написан вопрос не в функциях про валидацию и обработку перед отправлением в базу.все это в курсе. тут суть . --- Добавлено --- это сырой вариант
окай, теперь давай разъясним над этой строкой PHP: (!$images_type=='image/gif') Не факт. Скобки тут никакую пользу и вреда не приносят. У нас же не математическое выражение. символ ! означает что приводим в булевой тип данных (истину/ложь) + антипод. Т.е. значение есть, не пуст во всех типах ( с null не уверен ) Истина ( true ), переводим противоположному значению false. Дальше ты употребляешь не строгое сравнение == с другими данными, без проверки типа, а значит сверяющийся будет так же преобразован в булевой тип. Тип наследуется от первого сверяемого объекта. А значит: $type = $_FILES['images']['type']; // пусто ничего не прислалось if ( !$type // пустое значение конвертируется в тип bool значение FALSE ... не забываем про символ антипод ! получаем TRUE == // сверяем без типа 'image/gif' // строка со значением? да! строка какого типа ? да насрать! истина == истина Опробуй тест: PHP: <?php $a = 'текст'; if ( $a == true ) echo 1; if ( $a === true ) echo 666; --- Добавлено --- 1 --- Добавлено --- В итоге не только виновник в строгой сверке данных, но и антипод !