0
I have an HTML form:
<link rel="stylesheet" type="text/css" href="script/overlay-div/css/overlay-div.css">
<link rel="stylesheet" type="text/css" href="style/bootstrap.css">
<link rel="stylesheet" type="text/css" href="script/jquery-file-upload/css/jquery.fileupload-ui.css">
<h4>Casos 1</h4>
<h5>Inserir novo caso</h5>
<div>
<div class="form">
<form action="http://alexandrecoluna.com/includes/casos.lib.php" method="post" enctype="multipart/form-data">
<label for="nome">Nome do Caso</label>
<input type="text" name="nome" placeholder="Nome">
<label for="descricao">Descrição</label>
<textarea name="descricao" class="ckeditor"></textarea>
<label for="link">Imagem de capa</label>
<span class="file fileinput-button">
<span>Selecione uma foto de capa</span>
<input id="fileupload" type="file" name="imagem">
</span>
<label for="link">Imagens</label>
<span class="file fileinput-button">
<span>Selecione as fotos para o caso</span>
<input id="fileupload" type="file" name="imagens[]" multiple>
</span>
<div class="progress" style="display: none;">
<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div>
</div>
<div class="img-preview"></div>
<div style="clear:both;"></div>
<input type="hidden" name="action" value="INSERT">
<input type="submit" value="Salvar">
<input type="reset" value="Limpar">
</form>
</div>
</div>
<script type="text/javascript" src="script/jquery-file-upload/js/vendor/jquery.ui.widget.js"></script>
<script type="text/javascript" src="script/ckeditor/ckeditor.js"></script>
<script type="text/javascript">
$(function () {
CKEDITOR.replace( 'descricao', {
toolbar :
[
{ name: 'basicstyles', items : [ 'Bold','Italic' ] },
{ name: 'paragraph', items : [ 'NumberedList','BulletedList' ] }
]
});
});
</script>
After clicking the button Save it should redirect to the URL that is on action
, Only when you click it a short time by clicking and I get the message
FILE NOT FOUND
Firefox failed to locate the file http://alexandrecoluna.com/includes/casos.lib.php.
Check that the file name has typos, such as an uppercase letter instead of lowercase. Check whether the file has been moved, renamed or deleted.
The strange thing is that it only happens if I select multiple images across the field "Imagery" where I can select and send multiple images. In case I don’t put any image in this field it register normal.
cases.lib.php
<?php
include('class/Caso.class.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$action = ($_POST['action'] != '') ? $_POST['action'] : '' ;
switch ($action) {
case 'INSERT':
$caso = new Caso($_POST['nome'], $_POST['descricao'], $_FILES['imagem'], NULL, $_FILES['imagens']);
$response = $caso->save();
if ($response === true) {
echo '<script>alert("Cadastrado com sucesso");history.go(-1);</script>';
}
else {
echo json_encode(array ( 'status' => 'error', 'desc' => $response, 'fields' => array ($caso->nome, $caso->descricao, $caso->imagem, $caso->imagens)));
}
break;
case 'UPDATE':
if (!$_FILES['imagem'] && !$_FILES['imagens']) {
$caso = new Caso($_POST['nome'], $_POST['descricao'], false, $_POST['id'], false);
$response = $caso->update();
}elseif(isset($_FILES['imagem']) && !$_FILES["imagens"]) {
$caso = new Caso($_POST['nome'], $_POST['descricao'], $_FILES['imagem'], $_POST['id'], false);
$response = $caso->update();
}elseif(!$_FILES['imagem'] && isset($_FILES["imagens"])){
$caso = new Caso($_POST['nome'], $_POST['descricao'], false, $_POST['id'], $_FILES['imagens']);
$response = $caso->update();
}else{
$caso = new Caso($_POST['nome'], $_POST['descricao'], $_FILES['imagem'], $_POST['id'], $_FILES['imagens']);
$response = $caso->update();
}
if ($response != FALSE) {
echo '<script>alert("Atualizado com sucesso");history.go(-1);</script>';
} else {
echo json_encode(array ( 'status' => 'error', 'desc' => $response, 'fields' => array ($caso->nome, $_POST['descricao'], $caso->imagem)));
}
break;
case 'DELETE':
$caso = new Caso();
$response = $caso->delete($_POST['id']);
if ($response === true) {
echo 'true';
} else {
echo $response;
}
break;
default:
break;
}
}
function showCasos($qnt = NULL) {
$db = new Connection();
$qryStr = (isset($qnt)) ? 'SELECT * FROM acoluna_casos ORDER BY casos_id DESC LIMIT 0, ' . $qnt : 'SELECT * FROM acoluna_casos ORDER BY casos_id DESC;';
$qry = mysql_query($qryStr);
if ($qry) {
while ($row = mysql_fetch_assoc($qry)) {
$casos[] = new Caso($row['casos_nome'], $row['casos_descricao'], $row['casos_imagem'], $row['casos_id'], $row['casos_imagens']);
}
return (isset($casos)) ? $casos : FALSE;
}
}
function getCaso($id) {
$db = new Connection();
if (is_numeric($id)) {
$qryStr = "SELECT * FROM acoluna_casos WHERE casos_id='$id'";
$qry = mysql_query($qryStr);
if (mysql_num_rows($qry) == 1) {
$row = mysql_fetch_assoc($qry);
return new Caso($row['casos_nome'], $row['casos_descricao'], $row['casos_imagem'], $row['casos_id'], $row['casos_imagens']);
}
return NULL;
}
}
?>
Case.class.php
<?php
/*
// Projeto: Cadastro de dúvidas - Alexandre Coluna
// Class: Dúvidas
// Descrição: Usada para manipular as informações
// inseridas pelo usuário.
*/
include_once('Connection.class.php');
class Caso
{
const DB_TABLE = 'acoluna_casos';
private $id, $nome, $descricao, $imagem, $imagens;
public function __construct($nome = NULL, $descricao = NULL, $imagem = NULL, $id = NULL, $imagens = NULL) {
$this->nome = $this->encode_html($nome);
$this->descricao = $this->encode_html($descricao);
$this->imagem = $this->isImage($imagem);
$this->imagens = $this->IsmultiUpload($imagens);
if (isset($id)) {
$this->id = $id;
}
}
private function IsmultiUpload($imagem) {
if (is_array($imagem)) {
if (is_uploaded_file($imagem['tmp_name'][0])) {
return $this->multiUpload($imagem);
}
else {
$imagem = FALSE;
}
}
return $imagem;
}
public function multiUpload($imagens){
$arrayImagens = array();
if(!empty($imagens['name'][0])){
for($key = 0; $key <= count($imagens)-1; $key++){
if(!is_null($imagens['name'][$key])){
do{
$fileName = $this->random(5);
}while(file_exists('images/'.$fileName.'.jpg'));
list($width_orig, $height_orig) = getimagesize($_FILES['imagens']['tmp_name'][$key]);
$image = copy($_FILES['imagens']['tmp_name'][$key], 'images/'.$fileName.'.jpg');
//setup the new size of the image
$height = 750;
$width = 650;
//$new_height * $ratio;
if($width_orig > $height_orig){
$height = ($width/$width_orig)*$height_orig;
// Se altura é maior que largura, dividimos a altura determinada pela original e multiplicamos a largura pelo resultado, para manter a proporção da imagem
} elseif($width_orig < $height_orig) {
$width = ($height/$height_orig)*$width_orig;
} // -> fim if
//move the file in the new location
move_uploaded_file($_FILES['imagens']['tmp_name'][$key], 'images/'.$fileName.'.jpg');
// resample the image
$new_image = imagecreatetruecolor($width, $height);
$old_image = imagecreatefromjpeg('images/'.$fileName.'.jpg');
imagecopyresampled($new_image,$old_image,0,0,0,0,$width, $height, $width_orig, $height_orig);
//output
imagejpeg($new_image, 'images/'.$fileName.'.jpg', 100);
$arrayImagens[] = $fileName.'.jpg';
}
}
return json_encode($arrayImagens);
}
return FALSE;
}
////////////////
// Validação //
////////////////
public function isLink($link) {
$pattern = '/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/';
return (preg_match($pattern, $link)) ? $link : FALSE;
}
private function isImage($imagem) {
if (is_array($imagem)) {
if (is_uploaded_file($imagem['tmp_name'])) {
$dirImg = 'images/';
(!is_dir($dirImg)) ? mkdir($dirImg) : false;
do {
$fileName = $this->random(5);
} while (file_exists($dirImg . $fileName . '.jpg'));
$this->resizeImage($imagem, $dirImg.$fileName.'.jpg');
$imagem = $fileName . '.jpg';
}
else {
$imagem = FALSE;
}
}
return $imagem;
}
/**
* [validate description]
* @return [type] [description]
*/
public function validate() {
//$vars = get_class_vars(__CLASS__);
// foreach ($vars as $row) {
// if ($row == FALSE) {
// $return .=
// }
// }
return ($this->nome != FALSE && $this->descricao != FALSE) ? TRUE : FALSE;
}
////////////////////////
// Funções Genéricas //
////////////////////////
/**
* Gera um número aleatório do tamanho definido
* @param Int $len Tamanho do número de saída
* @return String Retorna em texto os números gerados.
*/
private function random($len) {
$array = array("0","1","2","3","4","5","6","7","8","9");
while(strlen(@$random) < $len){
@$random = $random . $array[rand(0,9)];
}
return $random;
}
/**
* Atalho para decodificar caracteres HTML e aspas
* @param String $str Texto a ser encodado
* @return String Texto convertido
*/
public function encode_html($str) {
return htmlentities($str, ENT_QUOTES, 'UTF-8');
}
/**
* Atalho para converter caracteres HTML e aspas
* @param String $str Texto a ser convertido
* @return String Texto convertido com as opções: {ENT_QUOTES, UTF-8}
*/
public function decode_html($str) {
return html_entity_decode($str, ENT_QUOTES, 'UTF-8');
}
/**
* Redimensionar a imagem
* @param [type] $image [description]
* @param [type] $target_file [description]
* @return [type] [description]
*/
private function resizeImage($image, $target_file) {
// $image is the uploaded image
list($width, $height) = getimagesize($image['tmp_name']);
$image = copy($image['tmp_name'], $target_file);
//setup the new size of the image
$ratio = $width/$height;
$new_height = 750;
$new_width = 650;
//$new_height * $ratio;
if($width > $height){
$new_height = ($new_width/$width)*$height;
// Se altura é maior que largura, dividimos a altura determinada pela original e multiplicamos a largura pelo resultado, para manter a proporção da imagem
} elseif($width < $height) {
$new_width = ($new_height/$height)*$width;
} // -> fim if
//move the file in the new location
move_uploaded_file($image['tmp_name'], $target_file);
// resample the image
$new_image = imagecreatetruecolor($new_width, $new_height);
$old_image = imagecreatefromjpeg($target_file);
imagecopyresampled($new_image,$old_image,0,0,0,0,$new_width, $new_height, $width, $height);
//output
imagejpeg($new_image, $target_file, 100);
}
//////////////////////////////////////////////////////
// Funções para manipulação dos dados persistentes //
//////////////////////////////////////////////////////
/**
* Salva os dados no banco de dados
* @return Bool/String Retorna TRUE em caso de sucesso ou a mensagem do erro em caso de erro
*/
public function save() {
$response = $this->validate();
if ($response) {
$db = new Connection();
$qryStr = "INSERT INTO ".self::DB_TABLE." VALUES ('', '".$this->nome."', '".$this->descricao."', '".$this->imagem."', '".$this->imagens."')";
return (mysql_query($qryStr)) ? TRUE : 'Erro ao inserir mídia no banco de dados.';
}
return 'Erro na validação dos dados: <br>' . $response . '<br>' . $this->nome . ' <br> ' . $this->descricao;
}
/**
* Atualiza os dados de do objeto no banco de dados
* @return Bool/String Returna TRUE em caso de sucesso ou a mensagem do erro em caso de falha
*/
public function update() {
if ($this->validate()) {
$db = new Connection();
if ($this->imagem != false && $this->imagens == false) { //Se existir foto de capa e não existir imagens
$qryStr = 'UPDATE ' . self::DB_TABLE . ' SET casos_nome="' . $this->nome . '", casos_descricao="' . $this->descricao . '", casos_imagem="' . $this->imagem . '" WHERE casos_id=' . $this->id . ';';
$i = 1;
} elseif($this->imagem == false && $this->imagens == false) { //Se não existir nem foto de capa nem imagens
$qryStr = 'UPDATE ' . self::DB_TABLE . ' SET casos_nome="' . $this->nome . '", casos_descricao="' . $this->descricao . '" WHERE casos_id=' . $this->id . ';';
$i = 2;
}elseif($this->imagem == false && $this->imagens != false){ //Se não existir foto de capa mas existir imagens
$qryStr = "UPDATE " . self::DB_TABLE . " SET casos_nome='" . $this->nome . "', casos_descricao='" . $this->descricao . "', casos_imagens='" . $this->imagens . "' WHERE casos_id=" . $this->id . ";";
$i = 3;
}elseif($this->imagem != false && $this->imagens != false){ //Se existir foto de capa e imagens
$qryStr = "UPDATE " . self::DB_TABLE . " SET casos_nome='" . $this->nome . "', casos_descricao='" . $this->descricao . "', casos_imagem='" . $this->imagem . "', casos_imagens='".$this->imagens."' WHERE casos_id=" . $this->id . ";";
$i = 4;
}
return mysql_query($qryStr) ? TRUE : FALSE;
}
return 'Erro na validação dos dados';
}
/**
* Exclui permanentemente o objeto no banco de dados
* @param Int $id Número do registro do objeto no banco de dados
* @return Bool/String Retorna TRUE em caso de sucesso ou a mensagem do erro em caso de falha
*/
public function delete($id) {
if (isset($id)) {
$db = new Connection();
$searchQry = 'SELECT * FROM ' . self::DB_TABLE . ' WHERE casos_id="' . $id . '";';
$qry = mysql_query($searchQry);
if (mysql_num_rows($qry) != 1) {
return 'Dúvida não encontrado no banco de dados.';
}
$qryStr = 'DELETE FROM ' . self::DB_TABLE . ' WHERE casos_id="' . $id . '";';
return mysql_query($qryStr) ? TRUE : 'Erro ao excluir dúvida. Por favor, tente novamente mais tarde.';
}
return 'ID de dúvida inválido.';
}
//////////////////////
// Métodos Mágicos //
//////////////////////
/**
* Em caso de String, decodifica e retorna a variável
* @param String $var Texto a ser convertido
* @return String Em caso de String, retorna a variável decodificada
*/
public function __get($var) {
if (property_exists($this, $var)) {
return (is_string($this->$var)) ? $this->decode_html($this->$var) : $this->$var;
}
}
}
?>
Are you using a jQuery library to send files to the server ? Put some of the code so people can help you, the HTML itself seems to have no problem.
– Guilherme Lopes
@Guilhermelopes I’m not using jQuery to upload files. HTML and PHP only
– Alisson Acioli
In PHP, you use
$_FILES
? Strange it does not find the file when you insert an image and find when not to put, should give some other error instead of this... Make sure when inserting the image there is nothing that changes the form action...– Guilherme Lopes
Yes, use
$_FILES
. The strange thing is that in the field Cover Photo which is only one, if I choose a photo and give Save without choosing the photos of the post (that would be the one to choose multiple photos) it will right. Now I put 1 image or more in the photos of the post he already gives that stick.– Alisson Acioli
It would be interesting to post PHP, HTML apparently is ok.
– Diego
@Diego Added
– Alisson Acioli
Both
<input type="file">
are sharing the sameid
, this may be affecting the logic ofsubmit
– Augusto Vasques