[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: прошу помочь исправить код
philcrosoft
В общем форма простая логин, пароль, email и загрузка фото.
не могу сделать, так чтобы когда поле для загрузки фото пустое выдовало ошибку по общему принципу в коде:


<?php
class
ExceptReg extends Exception {}
try

{ include_once ( "connect.php" ) ;
if ( isset( $_POST['submit'] ) ){
if ( empty( $_POST['login'] ) ) {
throw new ExceptReg( 'Вы не ввели логин' ) ;}
if ( empty( $_POST['password'] ) ) {
throw new ExceptReg( 'Вы не ввели пароль' ) ; }
if ( empty( $_POST['password2'] ) ) {
throw new ExceptReg( 'Вы не ввели подверждение пароля' ) ; }
if ( $_POST['password'] != $_POST['password2'] ) {
throw new ExceptReg( 'Пароли не совпадают' ) ; }
if ( empty( $_POST['email'] ) ) {
throw new ExceptReg( 'Вы не ввели E-mail' ) ; }
if ( empty( $_POST['email2'] ) ) {
throw new ExceptReg( 'Вы не ввели подверждение e-mail' ) ; }


$login = strip_tags($_POST['login']);
$password = strip_tags($_POST['password']);
$password2 = strip_tags($_POST['password2']);
$email = strip_tags($_POST['email']);
$email2 = strip_tags($_POST['email2']);


$target = "img/screenshots/";
$_FILES['pic']['name'] = str_replace(array('-', ':', ' '), '', $id_dates) . '_' . $_FILES['pic']['name'];
$target = $target .basename( $_FILES['pic']['name']);
$pic = ($_FILES['pic']['name']);


$query = "SELECT `id` FROM `users` WHERE `login`='{$login}'" ;
$sql = mysql_query( $query ) or die( mysql_error() ) ;
if ( mysql_num_rows( $sql ) > 0 )
{
throw new ExceptReg( 'Такой логин уже зарегисрирован!' ) ;
}
$query = "SELECT `id` FROM `users` WHERE `email`='{$email}'" ;
$sql = mysql_query( $query ) or die( mysql_error() ) ;
if ( mysql_num_rows( $sql ) > 0 )
{
throw new ExceptReg( 'Такой e-mail уже зарегистрирован!' ) ;
}

$query = "INSERT INTO users(login , password , email)
VALUES ('
$login', '$password', '$email')" ;
$result = mysql_query( $query ) or die( mysql_error() ) ;

header('Location: registered.html');
}
}

catch ( ExceptReg $e )
{
echo '<font color="red">Ошибка регистрации: ' . $e->getMessage() . '</font>';
}


if (move_uploaded_file($_FILES['pic']['tmp_name'], $target))
{
echo "Фото загружено!";
}
else { "Фото не загружено!";
}


Ну и чтобы когда заполнено было ссылалось на header ('Location')
Спасибо за помощь!



Спустя 25 минут, 12 секунд (21.05.2011 - 16:07) Lenarfate написал(а):
даже не знаю, что сказать. первый раз вижу такое

Спустя 7 минут, 10 секунд (21.05.2011 - 16:14) Greg1978 написал(а):
Условие: при пустом значении поля загрузки фото алгоритм должен завершать работу и выводить сообщение ошибки.
Значит нужно его поднять и проверять самым первым:

if (move_uploaded_file($_FILES['pic']['tmp_name'], $target))
{
echo "Фото загружено!";
}
else {
exit("Фото не загружено!");
}

Спустя 5 минут, 37 секунд (21.05.2011 - 16:20) philcrosoft написал(а):
а так чтобы выводило ошибку если поле загрузки пустое, по той же аналогии?

Спустя 1 минута, 52 секунды (21.05.2011 - 16:22) Greg1978 написал(а):
exit("Фото не загружено!");
Выведет текст и завершит программу.

Спустя 7 минут, 20 секунд (21.05.2011 - 16:29) philcrosoft написал(а):
просто если наверх ставлю этот код выдаёт

Warning: move_uploaded_file() [function.move-uploaded-file]: Filename cannot be empty in K:\home\mytest\www\reg.php on line 76
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'K:\tmp\php181.tmp' to '' in K:\home\mytest\www\reg.php on line 76
Warning: Cannot modify header information - headers already sent by (output started at K:\home\mytest\www\reg.php:76) in K:\home\mytest\www\reg.php on line 152
но регистрация данных проходит!
а если пишу так


if ( empty( $_POST['pic'] ) ) {throw new ExceptReg( 'Вы не загрузили фото' ) ;}

чтобы предупреждение выводит мне всё равно ошибку что поле пустое, хотя фото указал

Спустя 6 минут, 33 секунды (21.05.2011 - 16:35) Greg1978 написал(а):
$target = "img/screenshots/";
$_FILES['pic']['name'] = str_replace(array('-', ':', ' '), '', $id_dates) . '_' . $_FILES['pic']['name'];
$target = $target .basename( $_FILES['pic']['name']);
$pic = ($_FILES['pic']['name']);

if (!$pic)
{
throw new Exception('Выберете фото для загрузки!'):
}



// обработка загруженного файла
if (move_uploaded_file($_FILES['pic']['tmp_name'], $target))
{
echo "Фото загружено!";
}
else {
echo "Сбой загрузки с временного каталога сервера!";
}

Спустя 13 минут, 32 секунды (21.05.2011 - 16:49) philcrosoft написал(а):
Сбой загрузки с временного каталога сервера!
Warning: Cannot modify header information - headers already sent by (output started at K:\home\mytest\www\reg.php:113) in K:\home\mytest\www\reg.php on line 160

выдаёт такую вот ошибку, хотя данные регистрируются, а об оишбке что поле пусто так и не выдаёт
"throw new Exception('Выберете фото для загрузки!'):"

160 у меня - header('Location: registered.html');
при этом и тоже самое выдаёт если в поле указал фото

Спустя 49 минут, 24 секунды (21.05.2011 - 17:38) Greg1978 написал(а):
var_dump($pic);
что выведет

Спустя 4 минуты, 31 секунда (21.05.2011 - 17:43) philcrosoft написал(а):
Цитата (Greg1978 @ 21.05.2011 - 14:38)
var_dump($pic);
что выведет

NULL

Спустя 2 минуты, 35 секунд (21.05.2011 - 17:46) Greg1978 написал(а):
а var_dump(!$pic);

Спустя 2 минуты, 20 секунд (21.05.2011 - 17:48) Greg1978 написал(а):
<?php
class
ExceptReg extends Exception {}
try

{
include_once ( "connect.php" ) ;

$pic = ($_FILES['pic']['name']);

if (!$pic)
{
throw new Exception('Выберете фото для загрузки!'):
}


$target = "img/screenshots/";
$pic= str_replace(array('-', ':', ' '), '', $id_dates) . '_' . $pic;
$target = $target .basename($pic);

// обработка загруженного файла
if (move_uploaded_file($_FILES['pic']['tmp_name'], $target))
{
echo "Фото загружено!";
}
else {
echo "Сбой загрузки с временного каталога сервера!";
}

if ( isset( $_POST['submit'] ) ){
if ( empty( $_POST['login'] ) ) {
throw new ExceptReg( 'Вы не ввели логин' ) ;}
if ( empty( $_POST['password'] ) ) {
throw new ExceptReg( 'Вы не ввели пароль' ) ; }
if ( empty( $_POST['password2'] ) ) {
throw new ExceptReg( 'Вы не ввели подверждение пароля' ) ; }
if ( $_POST['password'] != $_POST['password2'] ) {
throw new ExceptReg( 'Пароли не совпадают' ) ; }
if ( empty( $_POST['email'] ) ) {
throw new ExceptReg( 'Вы не ввели E-mail' ) ; }
if ( empty( $_POST['email2'] ) ) {
throw new ExceptReg( 'Вы не ввели подверждение e-mail' ) ; }


$login = strip_tags($_POST['login']);
$password = strip_tags($_POST['password']);
$password2 = strip_tags($_POST['password2']);
$email = strip_tags($_POST['email']);
$email2 = strip_tags($_POST['email2']);

// дальнейший алгоритм ...


так у вас код написан?

Спустя 13 секунд (21.05.2011 - 17:48) philcrosoft написал(а):
Цитата (Greg1978 @ 21.05.2011 - 14:46)
а var_dump(!$pic);

bool(true)

Спустя 5 минут, 45 секунд (21.05.2011 - 17:54) Greg1978 написал(а):
Значит всё должно работать:)

Спустя 7 минут, 37 секунд (21.05.2011 - 18:01) philcrosoft написал(а):
работает куки почистил ))) но если не указываю фото не пишет чтобы выбрать фото на загрузки а пишет

Сбой загрузки с временного каталога сервера!
Warning: Cannot modify header information - headers already sent by (output started at K:\home\mytest\www\reg.php:113) in K:\home\mytest\www\reg.php on line 160

Спустя 4 минуты, 6 секунд (21.05.2011 - 18:06) Greg1978 написал(а):
тогда так:
if ($_FILES['pic']['error'] == 'UPLOAD_ERR_NO_FILE')
{
// Если браузер не отправил файл
throw new Exception('Выберете фото для загрузки!'):
}

Спустя 11 минут, 51 секунда (21.05.2011 - 18:17) philcrosoft написал(а):
дело в том, что я когда пропускаю поле фото пустым регистрация проходит и фото не загружает пишет

Сбой загрузки с временного каталога сервера!
Warning: Cannot modify header information - headers already sent by (output started at K:\home\mytest\www\reg.php:115) in K:\home\mytest\www\reg.php on line 162

Спустя 4 минуты, 26 секунд (21.05.2011 - 18:22) Greg1978 написал(а):
даже так как я написал выше:
if ($_FILES['pic']['error'] == 'UPLOAD_ERR_NO_FILE')
{
// Если браузер не отправил файл
throw new Exception('Выберете фото для загрузки!'):
}


странно ... ;)

Спустя 2 минуты, 35 секунд (21.05.2011 - 18:24) philcrosoft написал(а):
да даже так ((( а почему с этим полем имеенно так? почему не работает точно так же как с другими полями?

Спустя 15 минут, 51 секунда (21.05.2011 - 18:40) Greg1978 написал(а):
if ($_FILES['pic']['error'] == 'UPLOAD_ERR_NO_FILE')
{
// Если браузер не отправил файл
exit('Выберете фото для загрузки!'); // Замените на exit
}


У Вас после блока catch нет никаких операций.

Спустя 6 минут, 5 секунд (21.05.2011 - 18:46) philcrosoft написал(а):
нет других вариантов то? мне как бы просто сделать нужно на самом деле, когда пустое поле сообщало о том что оно пустое и всё )))
а то всё равно как то сложно всё )

Спустя 5 минут, 12 секунд (21.05.2011 - 18:52) Greg1978 написал(а):
дайте html код на JS быстрее написать чем ошибку отловить удалённо smile.gif

Спустя 14 минут, 2 секунды (21.05.2011 - 19:06) philcrosoft написал(а):
хотя да можно сделать и через js чтобы кнопка ыла неактивной пока всё не будет заполнено, все поля! есть ссылки или примеры?

Спустя 5 минут, 37 секунд (21.05.2011 - 19:11) Greg1978 написал(а):
зачем кнопку невидимой при сабмите сделать процедуру проверки
function valid()
{
if(getElementById('pic').val() == 'undefined') {
alert('Выберете фото!');
return false;
}
}


как то так

Спустя 5 минут, 46 секунд (21.05.2011 - 19:17) philcrosoft написал(а):
ладно разберёмся ))) потом как-нить доделаю понормальному эту регистрацию ) спасибо!

Спустя 24 минуты, 29 секунд (21.05.2011 - 19:41) philcrosoft написал(а):
вот в принципе нашёл код, но опять не могу сделать, чтобы кнопка зажигалась после выбора фото!



<form name="form1" method="post" action="">

<input
name="title" type="text" id="title" size="20" onblur = "checkFilled()">
<textarea
name="description" cols="18" rows="5" id="description" onblur = "checkFilled()"></textarea>
<input
name="theName" type="text" id="name" size="20" onblur = "checkFilled()">
<input
type="file" name="pic" id="pic" size="20">

<input
name="submit" type="submit" id="submitForm" value="Add Event" disabled="disabled">

</form>

<script
type = "text/javascript">

function
checkFilled() {
var filled = 0
var x = document.form1.title.value;
x = x.replace(/^\s+/,""); // strip leading spaces
if (x.length > 0) {filled ++}

var y = document.form1.description.value;
y = y.replace(/^s+/,""); // strip leading spaces
if (y.length > 0) {filled ++}

var z = document.form1.theName.value;
z = z.replace(/^s+/,""); // strip leading spaces
if (z.length > 0) {filled ++}

var z = document.form1.pic.value;
z = z.replace(/^s+/,""); // strip leading spaces
if (z.length > 0) {filled ++}


if (filled == 3) {
document.getElementById("submitForm").disabled = false;
}
else {document.getElementById("submitForm").disabled = true} // in case a field is filled then erased

}

</script>



Спустя 15 минут, 38 секунд (21.05.2011 - 19:57) Greg1978 написал(а):
Вы знакомы с jQuery?

Спустя 4 минуты, 51 секунда (21.05.2011 - 20:02) philcrosoft написал(а):
да чуток! решение в инете нашёл ... будут вопросы обращусь )

Спустя 6 минут, 16 секунд (21.05.2011 - 20:08) Greg1978 написал(а):
if($('#pic').val()){
$('div#submit').attr('style', 'display:block')
}
else {
$('div#submit').attr('style', 'display:none')
}

Спустя 16 часов, 9 минут, 9 секунд (22.05.2011 - 12:17) XCross написал(а):
Да че парится?


if(!file_exists($_FILES[' имя input type ']['tmp_name']))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.