exit проблем

galabin123

Registered
преработвам си системата за галерия на Миро ,но имам един проблем

}else{ echo 'Файлът не е картинка!'; exit; }
}else{ echo 'Такъв файл вече съществува!'; exit; }

когато файлът не е картинка или вече съществува заради тези exit; ми се бъгва темплейта,но ако ги махна си е казча независимо дали не е картинка или файла съществува.Помощ моля ви !
 
можеш в else да пишеш едно $error['neshto] = "Какъв е ерора"; (без exit;)

и после

if(count($error) == 0) { тук няма ерор и продължаваме ако всичко е ОК }
else { по желание можеш да изкараш съдържанието на $error } :)
 
kriss каза:
вместо exit; напиши return;
така не стана :/

kriss,разбрах те но нещо се забърквам с кода и не мога да го орпавя,това е целия код ако може някои да помогне

Код:
<?php
session_start();
include "config.php";
echo '<center>';
if ($_POST['upload']) {
$putq = 'upload/'.basename($_FILES['ufile']['name']);
if (@copy($_FILES['ufile']['tmp_name'], $putq)) {
list($width, $height, $type) = getimagesize("$putq");
if ($width > 1200) {
echo "Снимката е прекалено голяма. Снимката не е качена.";
unlink($putq);
}
else {
function upload_small($tmp_name,$file_type,$path_small){
if(!file_exists($path_small)){
if($file_type=="image/pjpeg" or $file_type=="image/jpeg" or $file_type=="image/gif" or $file_type=="image/x-png" or $file_type=="image/png"){//проверка дали файлът е картинка
list($width,$height) = getimagesize($tmp_name);
define("WIDTH","150");
define("HEIGHT","112");
if($width<WIDTH and $height<HEIGHT){
move_uploaded_file($tmp_name,$path_small);
}elseif($width>=WIDTH){
$new_width= WIDTH;
$new_height= (int) ($height*$new_width)/$width;
if($file_type=="image/pjpeg" or $file_type=="image/jpeg"){
$imagecreatefrom="imagecreatefromjpeg";
}elseif($file_type=="image/gif"){
$imagecreatefrom="imagecreatefromgif";
}elseif($file_type=="image/x-png" or $file_type=="image/png"){
$imagecreatefrom="imagecreatefrompng";
}
$image_p=imagecreatetruecolor($new_width, $new_height);
$image=$imagecreatefrom($tmp_name);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_p, $path_small, 100);
}elseif($height>=HEIGHT){
$new_height= HEIGHT;
$new_width= (int) ($width*$new_height)/$height;
if($file_type=="image/pjpeg" or $file_type=="image/jpeg"){
$imagecreatefrom="imagecreatefromjpeg";
}elseif($file_type=="image/gif"){
$imagecreatefrom="imagecreatefromgif";
}elseif($file_type=="image/x-png" or $file_type=="image/png"){
$imagecreatefrom="imagecreatefrompng";
}

$image_p=imagecreatetruecolor($new_width, $new_height);
$image=$imagecreatefrom($tmp_name);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_p, $path_small, 100);
}
}else{ echo 'Файлът не е картинка!'; return; }
}else{ echo 'Такъв файл вече съществува!'; return; }
}
define("URL","http://localhost/ps-place/");
$file_name=$_FILES['ufile']['name'];
$tmp_name=$_FILES['ufile']['tmp_name'];
$file_type=$_FILES['ufile']['type'];
$path_small="upload/small/".basename(strtolower($file_name));
upload_small($tmp_name,$file_type,$path_small);
echo '<br><img src="'.$path_small.'" alt=""><br>';
echo '<br>'.URL.$path_small.'<br>';
$title = $_POST['title'];
$res = mysql_query("INSERT INTO gallery (`title`, `snimka`, `small`) VALUES ('$title', '$putq', '$path_small')") or die(mysql_error());
echo "Снимката е добавена успешно.<br>
<a href='pro.php?page=addpic'>Обратно</a>";
}
} else {echo "Снимката не е качена";}
}
else
{
if(!function_exists("gd_info")){
echo 'GD Graphics Library не е инсталирана на този сървър!';
}else{
echo '
<form action="" method="post" enctype="multipart/form-data">
<table><tr><td valign="top">
Заглавие: </td><td><input type="text" name="title" class="search"></td>
<tr><td valign="middle">Описание</td><td><textarea name="opisanie" rows="4" cols="20" class="search"></textarea></td></tr></table>
<input type="file" name="ufile" class="search"><br><br>
<input type="submit" name="upload" value="Качи" class="search">
</form>
<a href="pro.php">Назад</a>
';
}
}
echo '
</center>
';
?>
 
Добре де моите отговори никой ли не ги вижда :( Мисля че предлагам доста по-добро решение от просто exit; или return;
 
djman каза:
Добре де моите отговори никой ли не ги вижда :( Мисля че предлагам доста по-добро решение от просто exit; или return;
опитах но не можах да се справя
 
galabin123 каза:
djman каза:
Добре де моите отговори никой ли не ги вижда :( Мисля че предлагам доста по-добро решение от просто exit; или return;
опитах но не можах да се справя

Е кое му е сложното :) Пишеш следните неща преди основното действие :

if(!условие1) { $error['usl1'] = 'Условие 1 е невярно'; }
if(!условие2) { $error['usl2'] = 'Условие 2 е невярно'; }
if(!условие3) { $error['usl3'] = 'Условие 3 е невярно'; }
забележи "!" преди условието - т.е. примерно ако качения файл не е картинка, да създаде $error['kartinka'] със стойност някакъв текст.
След тези проверки, следва:

if(count($error) == 0) {...} // тук се преброява колко ключа има в масива $error и ако те са нула (т.е. няма грешки) продължава със същинската част (качване на файла и тн)
else { } // тук можеш да изведеш всички евентуални получени грешки :) примерно foreach($error as $e) { echo $e.'<br />'; }

:)
 
Ето ти пример:

PHP:
$errors = array();

if(!$etc1)
{
    $errors[] = 'Файла е прекалено голям';
}

if(!$etc2)
{
    $errors[] = 'Моля качвайте само ZIP';
}

if(!$etc3)
{
    $errors[] = 'Друго..';
}

if(!sizeof($errors))
{
    // Сичко е наред, може да се качва от тука вече.
}

иначе грешките ги изкарваш с

PHP:
echo implode('<br />', $errors);
 
добре сформирах го така

Код:
$errors = array();
if(!$file_type=="image/pjpeg" or $file_type=="image/jpeg" or $file_type=="image/gif" or $file_type=="image/x-png" or $file_type=="image/png")
{
    $errors[] = 'Файла не е снимка';
}

if(!file_exists($path_small))
{
    $errors[] = 'Файла съществува';
}
if (!$width > 1200) {
$errors[] = 'Снимката е прекалено голяма. Снимката не е качена.';
unlink($putq);
}

ето го и пак проблема

кога е само 1 иф,всичко е наред,сложа ли втория,каквата и да кача винаги показва грешката от първия иф,сложа и 3-тия иф каквато и да кача вина ги показва първите 2 иф,с елсеиф не стана
 
PHP:
$errors = array();
$ext =  strtolower(end(explode(".",$_FILES['ufile']['tmp_name'])));
$ext_array = array('jpg', 'jpeg', 'gif', 'png');
if(!in_array($ext, $ext_array))
{
    $errors[] = 'Файла не е снимка';
}

if(file_exists($path_small))
{
    $errors[] = 'Файла съществува';
}
if ($width > 1200) {
$errors[] = 'Снимката е прекалено голяма. Снимката не е качена.';
unlink($putq);
}
 
Как е името на файла, който качваш и като напишеш echo $ext; какво излиза (след качването) ?
 
galabin123 каза:

Сбърках го, вместо tmp_name трябва да е name, сега трябва да бачка.

PHP:
$errors = array();
$ext =  strtolower(end(explode(".",$_FILES['ufile']['name'])));
$ext_array = array('jpg', 'jpeg', 'gif', 'png');
if(!in_array($ext, $ext_array))
{
    $errors[] = 'Файла не е снимка';
}

if(file_exists($path_small))
{
    $errors[] = 'Файла съществува';
}
if ($width > 1200) {
$errors[] = 'Снимката е прекалено голяма. Снимката не е качена.';
unlink($putq);
}
 

Back
Горе