2015-07-23 3 views
0

Я просто застрял сегодня на стене путаницы, и я надеюсь кто-то сможет помочь :)PHP Оператор IF Проблема с Исетью &! Пустым

У меня есть база данных, полные основных проектов, а также в эта таблица имеет такие атрибуты, как название проекта, номер проекта, изображение проекта и т. д. Я могу вводить новые проекты/отображать существующие проекты/и т. д. без проблем.

Моя проблема, кажется, возникает, когда я хочу редактировать проект. Мои мысли состояли в том, что мне пришлось бы создать инструкцию IF, чтобы узнать, есть ли новый файл, загруженный или нет, и либо установить новое имя файла в базе данных, если оно есть, либо сохранить старый в базе данных, если нет ,

Я играю с этим в течение нескольких дней, и я думаю, что я начал слишком далеко впереди себя. Я начал разбиваться на основы, и я сбиваюсь с моим IF-заявлением, похоже, что он обратный? Имеет ли это смысл?

Примеров:

if (isset($_COOKIE["OldProjectImage1"])){$OldProjectImage1 = $_COOKIE["OldProjectImage1"];} 

if(isset($OldProjectImage1)){ 
echo 'Your Browser Cookies are not enabled'; 
} else if(isset($_FILES['ProjectImage1']['name'])){ 
echo 'Image1 FILES isset'; 
} else if(!empty($_FILES['ProjectImage1']['name'])){ 
echo 'Image1 FILES empty'; 
} 

Сейчас в поиске StackExchange я обнаружил, что мы должны сделать заявление на COOKIE частях вместо переменного, как я сделал выше, но и так же не удается.

if (isset($_COOKIE["OldProjectImage1"])){$OldProjectImage1 = $_COOKIE["OldProjectImage1"];} 

if(!empty($_COOKIE['OldProjectImage1'])){ 
echo 'Your Browser Cookies are not enabled'; 
} else if(isset($_FILES['ProjectImage1']['name'])){ 
echo 'Image1 FILES isset'; 
} else if(!empty($_FILES['ProjectImage1']['name'])){ 
echo 'Image1 FILES empty'; 
} 

И я также попытался с IsSet

if (isset($_COOKIE["OldProjectImage1"])){$OldProjectImage1 = $_COOKIE["OldProjectImage1"];} 

if(isset($_COOKIE['OldProjectImage1'])){ 
echo 'Your Browser Cookies are not enabled'; 
} else if(isset($_FILES['ProjectImage1']['name'])){ 
echo 'Image1 FILES isset'; 
} else if(!empty($_FILES['ProjectImage1']['name'])){ 
echo 'Image1 FILES empty'; 
} 

Я попытался как с моим сценарием, и они оба ведут себя аналогичным образом. Возможно, я просто запутался в общем процессе?

Когда я запускаю свои тесты с включенными и без файлов cookie, всегда кажется, что пропустить первую часть инструкции IF (как с isset, так и с пустым) и перейти к следующему разделу. Затем аналогичным образом кажется, что оператор IF обратный (если это имеет смысл) - если я установил файл для загрузки, который заполняет ProjectImage1, я получаю «Image1 FILES empty». Если я не установил файл для загрузки и отправки формы, я получаю «Image1 FILES isset».

Я думал, что это по сути будет, на простом английском языке,

If cookie is empty then echo "Your Browser Cookies are not enabled" 
Else if ProjectImage1 Name is set, echo "Image1 FILES isset" 
Else if ProjectImage1 Name is Empty, echo "Image1 FILES empty" 

но это чувство для меня, как это назад? Я понимаю это неправильно?

Спасибо в продвинутом виде для любых ответов!

+0

Вы должны установить куки, прежде чем вы можете прочитать его. Но файл cookie не связан с базой данных, но не связан с загрузкой файлов. На самом деле, я не понимаю, что вы пытаетесь сделать. – GolezTrol

+1

Попробуйте «' 'прочь от' if (! Empty ('.' Empty() 'вернет true, если переменная существует, но пуста. На данный момент запись'! Empty' вернет 'true' (и поэтому передайте условие if), если переменная содержит что-то. –

+0

Каков результат var_dump ($ _ COOKIE ["OldProjectImage1"]) – danbahrami

ответ

1

Проблема лежит с:

if(isset($_COOKIE['OldProjectImage1'])){ 
echo 'Your Browser Cookies are not enabled'; 
} 

Вы проверяете, если печенье существует, и если это так, то вы говорите, что куки не включены. Немного странно. Добавить ! перед иссетом. Затем выполняется if-statement и текст.

я думаю, но я могу только предположить, что вы хотите, это в конце концов:

if (isset($_COOKIE["OldProjectImage1"])){ 
    // I believe the variable below can also be put between the else { and } down below 
    $OldProjectImage1 = $_COOKIE["OldProjectImage1"]; 
} 

if(!isset($_COOKIE['OldProjectImage1'])){ 
echo 'Your Browser Cookies are not enabled'; 
} else if(!isset($_FILES['ProjectImage1']['name'])){ 
echo 'Image1 FILES is not set'; 
} else if(empty($_FILES['ProjectImage1']['name'])){ 
echo 'Image1 FILES is empty'; 
}else { 
    // upload file here 
} 
0

Я думаю, что вы хотите проверить браузер куки включен или нет?

Detect if cookies are enabled in PHP

Ответа на этот вопрос Shiplu Mokaddim:

session_start(); 
if (isset($_GET['check']) && $_GET['check'] == true) { 
    if (isset($_COOKIE['foo']) && $_COOKIE['foo'] == 'bar') { 
     // cookie is working 
     // get back to our old page 
     header("location: {$_SESSION['page']}"); 
    } else { 
     // show the message "cookie is not working" 
    } 
} else { 
    // save the referrer in session. if cookie works we can get back to it later. 
    $_SESSION['page'] = $_SERVER['HTTP_REFERER']; 
    // set a cookie to test 
    setcookie('foo', 'bar', time() + 3600); 
    // redirecting to the same page to check 
    header("location: {$_SERVER['PHP_SELF']}?check=true"); 
} 

Detect печенье в Javascript

Check if cookies are enabled

Таким образом, в сочетании с вашим кодом и моим собственным объяснением:

<?php 
    session_start(); 
    //check if a cookie test is started 
    if (isset($_GET['check']) && $_GET['check'] == true) { 
     //cookie test is started 
     if (isset($_COOKIE['foo']) && $_COOKIE['foo'] == 'bar') { 
      //cookie test success, go back to the previous page 
      header("location: {$_SESSION['page']}"); 
     } else { 
      //cookie test fail, echo the message and continue 
      echo 'Your Browser Cookies are not enabled'; 
     } 
    } else { 
     //start cookie test if a cookie test wasn't done 
     //check if a cookie test was done. 
     if (!isset($_COOKIE['foo']) && $_COOKIE['foo'] == 'bar') { 
      //start a cookie test if a cookie test wasn't done 
      $_SESSION['page'] = $_SERVER['HTTP_REFERER']; 
      setcookie('foo', 'bar', time() + 3600); 
      header("location: {$_SERVER['PHP_SELF']}?check=true"); 
     } 
    } 
    if(!isset($_COOKIE['OldProjectImage1'])){ 
     echo "OldProjectImage1 doesn't exists in cookies."; 
    } else if(!isset($_FILES['ProjectImage1']['name'])){ 
     echo "Image1 FILES is not set"; 
    } else if(empty($_FILES['ProjectImage1']['name'])){ 
     echo "Image1 FILES is empty"; 
    } 
?> 
Смежные вопросы