не могу сделать, так чтобы когда поле для загрузки фото пустое выдовало ошибку по общему принципу в коде:
<?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
но регистрация данных проходит!
а если пишу так
чтобы предупреждение выводит мне всё равно ошибку что поле пустое, хотя фото указал
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');
при этом и тоже самое выдаёт если в поле указал фото
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
Сбой загрузки с временного каталога сервера!
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
Сбой загрузки с временного каталога сервера!
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 быстрее написать чем ошибку отловить удалённо
Спустя 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']))