Ir para conteúdo

Todas as Novidades

Atualizada automaticamente     

  1. Recentemente
  2. Today
  3. Orientação Landscape com Bootstrap

    Considerações Antes de dar minha resposta, gostaria de trazer as seguintes considerações: Você não especificou qual versão está usando; Portanto, minha resposta será referente a 4. Bootstrap 4 não utiliza landscape como breakpoint. Breakpoints BS4 Quando falamos da versão mais nova do Bootstrap, não existe breakpoint em landscape. Esse framework utiliza as medias queries para fazer uma abordagem mobile first e, consequentemente, os breakpoints são feitos com a propriedade min-width. Por isso, se você estiver testando o projeto virando o celular, na verdade, o frame está levando em conta apenas a largura do seu dispositivo. Assim, ele pouco se importa se o aparelho está deitado ou não. Alterando os breakpoints Para alterar os breakpoints do BS4 temos dois caminhos: Sass; Exige mínimo conhecimento da sintaxe scss. CSS. Existe básico de CSS. Caminho Sass Este caminho é dado como rápido, pois, basta alterar os valores de duas variáveis no partial _variables.scss. E, no seu caso, primeiramente, deve-se diminuir o valor do item sm, na variável $grid-breakpoints: (O valor para esse item deve ser igual a largura do seu celular, em posição horizontal) Em segundo plano, diminuir proporcionalmente, o valor do item sm da variável $container-max-widths: Caminho CSS Diferente do método passado, este exige que você procure e substitua breakpoints, no arquivo CSS. E, caso esqueça algum, seu layout vai quebrar. Os primeiros valores a serem alterados são os seguintes: (O valor da primeira propriedade deve ser igual a largura do seu celular, em horizontal) Agora, importante é alterar o valor de breakpoint da media query que comporta as colunas para dispositivos pequenos (col-sm): (O valor para esse item deve ser igual a largura do seu celular, em posição horizontal)
  4. Aprendi recentemente a usar MUITO o var_dump(); remédio do bom !
  5. Erro com Upload

    Difícil de entender, qual o nome da pasta para fazer o upload?
  6. Insert ID

    Olá amigos. Vim aqui discutir com vocês um problema que tive agora, e muito sinistro... Eu faço uma inserção no banco com o arquivo cadastro.php Ao fim do código eu coloco: $id = mysqli_insert_id($My); if($sql_insere){ echo "<script>window.location.href='abre_registro.php?id=$id';</script>"; } Redireciona normalmente, mas diz que o registro não existe. Porém se eu selecionar o endereço no browser e der um enter para executar a url de novo ele abre o registro. Já coloquei um sleep(10); pensando que era porquê o registro ainda não estava no banco, mas não é. Não tem jeito pra mim. Ele só abre quando eu vou lá no browser e mando ir para a url novamente. Alguém ja passou por isso?
  7. Erro de Depreciação no AJAX

    Olá senhores, Agradeço a ajuda, como eu disse eu não sou programador, mas tenho aprendido muito aqui no fórum. Acabei passando um pente fino em tudo e consegui resolver. O código JS estava assim: ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- $(document).on('click', '.user-chat', function(event){ event.preventDefault(); var user_id = $(this).attr('user-id'); if($('.chat-user-'+user_id).length < 1){ var count_chat_box = $('.chat-box').length; if(count_chat_box < 3){ $.get('js/ChatBox.php', {id:user_id}, function(res){ <-- observe o 'C' maiúsculo aqui $('.chat-container').append(res); }); } } }); ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- Só que o arquivo em PHP estava nomeado assim: chatBox.php <-- observe o 'C' minúsculo aqui Isso mesmo...mudei de minúsculo para maiúsculo e funcionou. Pode isso? Valeu galera, pode fechar o tópico, por favor.
  8. Erro com Upload

    Olá Pessoa, Estou utilizando esse script do codeigniter. ´Já coloquei permissão 777 na pasta "tmp" no servidor "/home/meu_site/public_html/html/tmp" Porém ainda estou recebendo a mensagem de "The upload destination folder does not appear to be writable." Alguém poderia me ajudar? Segue o script: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * CodeIgniter * * An open source application development framework for PHP 5.1.6 or newer * * @package CodeIgniter * @author ExpressionEngine Dev Team * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc. * @license http://codeigniter.com/user_guide/license.html * @link http://codeigniter.com * @since Version 1.0 * @filesource */ // ------------------------------------------------------------------------ /** * File Uploading Class * * @package CodeIgniter * @subpackage Libraries * @category Uploads * @author ExpressionEngine Dev Team * @link http://codeigniter.com/user_guide/libraries/file_uploading.html */ class CI_Upload { public $max_size = 0; public $max_width = 0; public $max_height = 0; public $max_filename = 0; public $allowed_types = ""; public $file_temp = ""; public $file_name = ""; public $orig_name = ""; public $file_type = ""; public $file_size = ""; public $file_ext = ""; public $upload_path = ""; public $overwrite = FALSE; public $encrypt_name = FALSE; public $is_image = FALSE; public $image_width = ''; public $image_height = ''; public $image_type = ''; public $image_size_str = ''; public $error_msg = array(); public $mimes = array(); public $remove_spaces = TRUE; public $xss_clean = FALSE; public $temp_prefix = "temp_file_"; public $client_name = ''; protected $_file_name_override = ''; /** * Constructor * * @access public */ public function __construct($props = array()) { if (count($props) > 0) { $this->initialize($props); } log_message('debug', "Upload Class Initialized"); } // -------------------------------------------------------------------- /** * Initialize preferences * * @param array * @return void */ public function initialize($config = array()) { $defaults = array( 'max_size' => 0, 'max_width' => 0, 'max_height' => 0, 'max_filename' => 0, 'allowed_types' => "", 'file_temp' => "", 'file_name' => "", 'orig_name' => "", 'file_type' => "", 'file_size' => "", 'file_ext' => "", 'upload_path' => "", 'overwrite' => FALSE, 'encrypt_name' => FALSE, 'is_image' => FALSE, 'image_width' => '', 'image_height' => '', 'image_type' => '', 'image_size_str' => '', 'error_msg' => array(), 'mimes' => array(), 'remove_spaces' => TRUE, 'xss_clean' => FALSE, 'temp_prefix' => "temp_file_", 'client_name' => '' ); foreach ($defaults as $key => $val) { if (isset($config[$key])) { $method = 'set_'.$key; if (method_exists($this, $method)) { $this->$method($config[$key]); } else { $this->$key = $config[$key]; } } else { $this->$key = $val; } } // if a file_name was provided in the config, use it instead of the user input // supplied file name for all uploads until initialized again $this->_file_name_override = $this->file_name; } // -------------------------------------------------------------------- /** * Perform the file upload * * @return bool */ public function do_upload($field = 'userfile') { // Is $_FILES[$field] set? If not, no reason to continue. if ( ! isset($_FILES[$field])) { $this->set_error('upload_no_file_selected'); return FALSE; } // Is the upload path valid? if ( ! $this->validate_upload_path()) { // errors will already be set by validate_upload_path() so just return FALSE return FALSE; } // Was the file able to be uploaded? If not, determine the reason why. if ( ! is_uploaded_file($_FILES[$field]['tmp_name'])) { $error = ( ! isset($_FILES[$field]['error'])) ? 4 : $_FILES[$field]['error']; switch($error) { case 1: // UPLOAD_ERR_INI_SIZE $this->set_error('upload_file_exceeds_limit'); break; case 2: // UPLOAD_ERR_FORM_SIZE $this->set_error('upload_file_exceeds_form_limit'); break; case 3: // UPLOAD_ERR_PARTIAL $this->set_error('upload_file_partial'); break; case 4: // UPLOAD_ERR_NO_FILE $this->set_error('upload_no_file_selected'); break; case 6: // UPLOAD_ERR_NO_TMP_DIR $this->set_error('upload_no_temp_directory'); break; case 7: // UPLOAD_ERR_CANT_WRITE $this->set_error('upload_unable_to_write_file'); break; case 8: // UPLOAD_ERR_EXTENSION $this->set_error('upload_stopped_by_extension'); break; default : $this->set_error('upload_no_file_selected'); break; } return FALSE; } // Set the uploaded data as class variables $this->file_temp = $_FILES[$field]['tmp_name']; $this->file_size = $_FILES[$field]['size']; $this->_file_mime_type($_FILES[$field]); $this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $this->file_type); $this->file_type = strtolower(trim(stripslashes($this->file_type), '"')); $this->file_name = $this->_prep_filename($_FILES[$field]['name']); $this->file_ext = $this->get_extension($this->file_name); $this->client_name = $this->file_name; // Is the file type allowed to be uploaded? if ( ! $this->is_allowed_filetype()) { $this->set_error('upload_invalid_filetype'); return FALSE; } // if we're overriding, let's now make sure the new name and type is allowed if ($this->_file_name_override != '') { $this->file_name = $this->_prep_filename($this->_file_name_override); // If no extension was provided in the file_name config item, use the uploaded one if (strpos($this->_file_name_override, '.') === FALSE) { $this->file_name .= $this->file_ext; } // An extension was provided, lets have it! else { $this->file_ext = $this->get_extension($this->_file_name_override); } if ( ! $this->is_allowed_filetype(TRUE)) { $this->set_error('upload_invalid_filetype'); return FALSE; } } // Convert the file size to kilobytes if ($this->file_size > 0) { $this->file_size = round($this->file_size/1024, 2); } // Is the file size within the allowed maximum? if ( ! $this->is_allowed_filesize()) { $this->set_error('upload_invalid_filesize'); return FALSE; } // Are the image dimensions within the allowed size? // Note: This can fail if the server has an open_basdir restriction. if ( ! $this->is_allowed_dimensions()) { $this->set_error('upload_invalid_dimensions'); return FALSE; } // Sanitize the file name for security $this->file_name = $this->clean_file_name($this->file_name); // Truncate the file name if it's too long if ($this->max_filename > 0) { $this->file_name = $this->limit_filename_length($this->file_name, $this->max_filename); } // Remove white spaces in the name if ($this->remove_spaces == TRUE) { $this->file_name = preg_replace("/\s+/", "_", $this->file_name); } /* * Validate the file name * This function appends an number onto the end of * the file if one with the same name already exists. * If it returns false there was a problem. */ $this->orig_name = $this->file_name; if ($this->overwrite == FALSE) { $this->file_name = $this->set_filename($this->upload_path, $this->file_name); if ($this->file_name === FALSE) { return FALSE; } } /* * Run the file through the XSS hacking filter * This helps prevent malicious code from being * embedded within a file. Scripts can easily * be disguised as images or other file types. */ if ($this->xss_clean) { if ($this->do_xss_clean() === FALSE) { $this->set_error('upload_unable_to_write_file'); return FALSE; } } /* * Move the file to the final destination * To deal with different server configurations * we'll attempt to use copy() first. If that fails * we'll use move_uploaded_file(). One of the two should * reliably work in most environments */ if ( ! @copy($this->file_temp, $this->upload_path.$this->file_name)) { if ( ! @move_uploaded_file($this->file_temp, $this->upload_path.$this->file_name)) { $this->set_error('upload_destination_error'); return FALSE; } } /* * Set the finalized image dimensions * This sets the image width/height (assuming the * file was an image). We use this information * in the "data" function. */ $this->set_image_properties($this->upload_path.$this->file_name); return TRUE; } // -------------------------------------------------------------------- /** * Finalized Data Array * * Returns an associative array containing all of the information * related to the upload, allowing the developer easy access in one array. * * @return array */ public function data() { return array ( 'file_name' => $this->file_name, 'file_type' => $this->file_type, 'file_path' => $this->upload_path, 'full_path' => $this->upload_path.$this->file_name, 'raw_name' => str_replace($this->file_ext, '', $this->file_name), 'orig_name' => $this->orig_name, 'client_name' => $this->client_name, 'file_ext' => $this->file_ext, 'file_size' => $this->file_size, 'is_image' => $this->is_image(), 'image_width' => $this->image_width, 'image_height' => $this->image_height, 'image_type' => $this->image_type, 'image_size_str' => $this->image_size_str, ); } // -------------------------------------------------------------------- /** * Set Upload Path * * @param string * @return void */ public function set_upload_path($path) { // Make sure it has a trailing slash $this->upload_path = rtrim($path, '/').'/'; } // -------------------------------------------------------------------- /** * Set the file name * * This function takes a filename/path as input and looks for the * existence of a file with the same name. If found, it will append a * number to the end of the filename to avoid overwriting a pre-existing file. * * @param string * @param string * @return string */ public function set_filename($path, $filename) { if ($this->encrypt_name == TRUE) { mt_srand(); $filename = md5(uniqid(mt_rand())).$this->file_ext; } if ( ! file_exists($path.$filename)) { return $filename; } $filename = str_replace($this->file_ext, '', $filename); $new_filename = ''; for ($i = 1; $i < 100; $i++) { if ( ! file_exists($path.$filename.$i.$this->file_ext)) { $new_filename = $filename.$i.$this->file_ext; break; } } if ($new_filename == '') { $this->set_error('upload_bad_filename'); return FALSE; } else { return $new_filename; } } // -------------------------------------------------------------------- /** * Set Maximum File Size * * @param integer * @return void */ public function set_max_filesize($n) { $this->max_size = ((int) $n < 0) ? 0: (int) $n; } // -------------------------------------------------------------------- /** * Set Maximum File Name Length * * @param integer * @return void */ public function set_max_filename($n) { $this->max_filename = ((int) $n < 0) ? 0: (int) $n; } // -------------------------------------------------------------------- /** * Set Maximum Image Width * * @param integer * @return void */ public function set_max_width($n) { $this->max_width = ((int) $n < 0) ? 0: (int) $n; } // -------------------------------------------------------------------- /** * Set Maximum Image Height * * @param integer * @return void */ public function set_max_height($n) { $this->max_height = ((int) $n < 0) ? 0: (int) $n; } // -------------------------------------------------------------------- /** * Set Allowed File Types * * @param string * @return void */ public function set_allowed_types($types) { if ( ! is_array($types) && $types == '*') { $this->allowed_types = '*'; return; } $this->allowed_types = explode('|', $types); } // -------------------------------------------------------------------- /** * Set Image Properties * * Uses GD to determine the width/height/type of image * * @param string * @return void */ public function set_image_properties($path = '') { if ( ! $this->is_image()) { return; } if (function_exists('getimagesize')) { if (FALSE !== ($D = @getimagesize($path))) { $types = array(1 => 'gif', 2 => 'jpeg', 3 => 'png'); $this->image_width = $D['0']; $this->image_height = $D['1']; $this->image_type = ( ! isset($types[$D['2']])) ? 'unknown' : $types[$D['2']]; $this->image_size_str = $D['3']; // string containing height and width } } } // -------------------------------------------------------------------- /** * Set XSS Clean * * Enables the XSS flag so that the file that was uploaded * will be run through the XSS filter. * * @param bool * @return void */ public function set_xss_clean($flag = FALSE) { $this->xss_clean = ($flag == TRUE) ? TRUE : FALSE; } // -------------------------------------------------------------------- /** * Validate the image * * @return bool */ public function is_image() { // IE will sometimes return odd mime-types during upload, so here we just standardize all // jpegs or pngs to the same file type. $png_mimes = array('image/x-png'); $jpeg_mimes = array('image/jpg', 'image/jpe', 'image/jpeg', 'image/pjpeg'); if (in_array($this->file_type, $png_mimes)) { $this->file_type = 'image/png'; } if (in_array($this->file_type, $jpeg_mimes)) { $this->file_type = 'image/jpeg'; } $img_mimes = array( 'image/gif', 'image/jpeg', 'image/png', ); return (in_array($this->file_type, $img_mimes, TRUE)) ? TRUE : FALSE; } // -------------------------------------------------------------------- /** * Verify that the filetype is allowed * * @return bool */ public function is_allowed_filetype($ignore_mime = FALSE) { if ($this->allowed_types == '*') { return TRUE; } if (count($this->allowed_types) == 0 OR ! is_array($this->allowed_types)) { $this->set_error('upload_no_file_types'); return FALSE; } $ext = strtolower(ltrim($this->file_ext, '.')); if ( ! in_array($ext, $this->allowed_types)) { return FALSE; } // Images get some additional checks $image_types = array('gif', 'jpg', 'jpeg', 'png', 'jpe'); if (in_array($ext, $image_types)) { if (getimagesize($this->file_temp) === FALSE) { return FALSE; } } if ($ignore_mime === TRUE) { return TRUE; } $mime = $this->mimes_types($ext); if (is_array($mime)) { if (in_array($this->file_type, $mime, TRUE)) { return TRUE; } } elseif ($mime == $this->file_type) { return TRUE; } return FALSE; } // -------------------------------------------------------------------- /** * Verify that the file is within the allowed size * * @return bool */ public function is_allowed_filesize() { if ($this->max_size != 0 AND $this->file_size > $this->max_size) { return FALSE; } else { return TRUE; } } // -------------------------------------------------------------------- /** * Verify that the image is within the allowed width/height * * @return bool */ public function is_allowed_dimensions() { if ( ! $this->is_image()) { return TRUE; } if (function_exists('getimagesize')) { $D = @getimagesize($this->file_temp); if ($this->max_width > 0 AND $D['0'] > $this->max_width) { return FALSE; } if ($this->max_height > 0 AND $D['1'] > $this->max_height) { return FALSE; } return TRUE; } return TRUE; } // -------------------------------------------------------------------- /** * Validate Upload Path * * Verifies that it is a valid upload path with proper permissions. * * * @return bool */ public function validate_upload_path() { if ($this->upload_path == '') { $this->set_error('upload_no_filepath'); return FALSE; } if (function_exists('realpath') AND @realpath($this->upload_path) !== FALSE) { $this->upload_path = str_replace("\\", "/", realpath($this->upload_path)); } if ( ! @is_dir($this->upload_path)) { $this->set_error('upload_no_filepath'); return FALSE; } if ( ! is_really_writable($this->upload_path)) { $this->set_error('upload_not_writable'); return FALSE; } $this->upload_path = preg_replace("/(.+?)\/*$/", "\\1/", $this->upload_path); return TRUE; } // -------------------------------------------------------------------- /** * Extract the file extension * * @param string * @return string */ public function get_extension($filename) { $x = explode('.', $filename); return '.'.end($x); } // -------------------------------------------------------------------- /** * Clean the file name for security * * @param string * @return string */ public function clean_file_name($filename) { $bad = array( "<!--", "-->", "'", "<", ">", '"', '&', '$', '=', ';', '?', '/', "%20", "%22", "%3c", // < "%253c", // < "%3e", // > "%0e", // > "%28", // ( "%29", // ) "%2528", // ( "%26", // & "%24", // $ "%3f", // ? "%3b", // ; "%3d" // = ); $filename = str_replace($bad, '', $filename); return stripslashes($filename); } // -------------------------------------------------------------------- /** * Limit the File Name Length * * @param string * @return string */ public function limit_filename_length($filename, $length) { if (strlen($filename) < $length) { return $filename; } $ext = ''; if (strpos($filename, '.') !== FALSE) { $parts = explode('.', $filename); $ext = '.'.array_pop($parts); $filename = implode('.', $parts); } return substr($filename, 0, ($length - strlen($ext))).$ext; } // -------------------------------------------------------------------- /** * Runs the file through the XSS clean function * * This prevents people from embedding malicious code in their files. * I'm not sure that it won't negatively affect certain files in unexpected ways, * but so far I haven't found that it causes trouble. * * @return void */ public function do_xss_clean() { $file = $this->file_temp; if (filesize($file) == 0) { return FALSE; } if (function_exists('memory_get_usage') && memory_get_usage() && ini_get('memory_limit') != '') { $current = ini_get('memory_limit') * 1024 * 1024; // There was a bug/behavioural change in PHP 5.2, where numbers over one million get output // into scientific notation. number_format() ensures this number is an integer // http://bugs.php.net/bug.php?id=43053 $new_memory = number_format(ceil(filesize($file) + $current), 0, '.', ''); ini_set('memory_limit', $new_memory); // When an integer is used, the value is measured in bytes. - PHP.net } // If the file being uploaded is an image, then we should have no problem with XSS attacks (in theory), but // IE can be fooled into mime-type detecting a malformed image as an html file, thus executing an XSS attack on anyone // using IE who looks at the image. It does this by inspecting the first 255 bytes of an image. To get around this // CI will itself look at the first 255 bytes of an image to determine its relative safety. This can save a lot of // processor power and time if it is actually a clean image, as it will be in nearly all instances _except_ an // attempted XSS attack. if (function_exists('getimagesize') && @getimagesize($file) !== FALSE) { if (($file = @fopen($file, 'rb')) === FALSE) // "b" to force binary { return FALSE; // Couldn't open the file, return FALSE } $opening_bytes = fread($file, 256); fclose($file); // These are known to throw IE into mime-type detection chaos // <a, <body, <head, <html, <img, <plaintext, <pre, <script, <table, <title // title is basically just in SVG, but we filter it anyhow if ( ! preg_match('/<(a|body|head|html|img|plaintext|pre|script|table|title)[\s>]/i', $opening_bytes)) { return TRUE; // its an image, no "triggers" detected in the first 256 bytes, we're good } else { return FALSE; } } if (($data = @file_get_contents($file)) === FALSE) { return FALSE; } $CI =& get_instance(); return $CI->security->xss_clean($data, TRUE); } // -------------------------------------------------------------------- /** * Set an error message * * @param string * @return void */ public function set_error($msg) { $CI =& get_instance(); $CI->lang->load('upload'); if (is_array($msg)) { foreach ($msg as $val) { $msg = ($CI->lang->line($val) == FALSE) ? $val : $CI->lang->line($val); $this->error_msg[] = $msg; log_message('error', $msg); } } else { $msg = ($CI->lang->line($msg) == FALSE) ? $msg : $CI->lang->line($msg); $this->error_msg[] = $msg; log_message('error', $msg); } } // -------------------------------------------------------------------- /** * Display the error message * * @param string * @param string * @return string */ public function display_errors($open = '<p>', $close = '</p>') { $str = ''; foreach ($this->error_msg as $val) { $str .= $open.$val.$close; } return $str; } // -------------------------------------------------------------------- /** * List of Mime Types * * This is a list of mime types. We use it to validate * the "allowed types" set by the developer * * @param string * @return string */ public function mimes_types($mime) { global $mimes; if (count($this->mimes) == 0) { if (defined('ENVIRONMENT') AND is_file(APPPATH.'config/'.ENVIRONMENT.'/mimes.php')) { include(APPPATH.'config/'.ENVIRONMENT.'/mimes.php'); } elseif (is_file(APPPATH.'config/mimes.php')) { include(APPPATH.'config//mimes.php'); } else { return FALSE; } $this->mimes = $mimes; unset($mimes); } return ( ! isset($this->mimes[$mime])) ? FALSE : $this->mimes[$mime]; } // -------------------------------------------------------------------- /** * Prep Filename * * Prevents possible script execution from Apache's handling of files multiple extensions * http://httpd.apache.org/docs/1.3/mod/mod_mime.html#multipleext * * @param string * @return string */ protected function _prep_filename($filename) { if (strpos($filename, '.') === FALSE OR $this->allowed_types == '*') { return $filename; } $parts = explode('.', $filename); $ext = array_pop($parts); $filename = array_shift($parts); foreach ($parts as $part) { if ( ! in_array(strtolower($part), $this->allowed_types) OR $this->mimes_types(strtolower($part)) === FALSE) { $filename .= '.'.$part.'_'; } else { $filename .= '.'.$part; } } $filename .= '.'.$ext; return $filename; } // -------------------------------------------------------------------- /** * File MIME type * * Detects the (actual) MIME type of the uploaded file, if possible. * The input array is expected to be $_FILES[$field] * * @param array * @return void */ protected function _file_mime_type($file) { // We'll need this to validate the MIME info string (e.g. text/plain; charset=us-ascii) $regexp = '/^([a-z\-]+\/[a-z0-9\-\.\+]+)(;\s.+)?$/'; /* Fileinfo extension - most reliable method * * Unfortunately, prior to PHP 5.3 - it's only available as a PECL extension and the * more convenient FILEINFO_MIME_TYPE flag doesn't exist. */ if (function_exists('finfo_file')) { $finfo = finfo_open(FILEINFO_MIME); if (is_resource($finfo)) // It is possible that a FALSE value is returned, if there is no magic MIME database file found on the system { $mime = @finfo_file($finfo, $file['tmp_name']); finfo_close($finfo); /* According to the comments section of the PHP manual page, * it is possible that this function returns an empty string * for some files (e.g. if they don't exist in the magic MIME database) */ if (is_string($mime) && preg_match($regexp, $mime, $matches)) { $this->file_type = $matches[1]; return; } } } /* This is an ugly hack, but UNIX-type systems provide a "native" way to detect the file type, * which is still more secure than depending on the value of $_FILES[$field]['type'], and as it * was reported in issue #750 (https://github.com/EllisLab/CodeIgniter/issues/750) - it's better * than mime_content_type() as well, hence the attempts to try calling the command line with * three different functions. * * Notes: * - the DIRECTORY_SEPARATOR comparison ensures that we're not on a Windows system * - many system admins would disable the exec(), shell_exec(), popen() and similar functions * due to security concerns, hence the function_exists() checks */ if (DIRECTORY_SEPARATOR !== '\\') { $cmd = 'file --brief --mime ' . escapeshellarg($file['tmp_name']) . ' 2>&1'; if (function_exists('exec')) { /* This might look confusing, as $mime is being populated with all of the output when set in the second parameter. * However, we only neeed the last line, which is the actual return value of exec(), and as such - it overwrites * anything that could already be set for $mime previously. This effectively makes the second parameter a dummy * value, which is only put to allow us to get the return status code. */ $mime = @exec($cmd, $mime, $return_status); if ($return_status === 0 && is_string($mime) && preg_match($regexp, $mime, $matches)) { $this->file_type = $matches[1]; return; } } if ( (bool) @ini_get('safe_mode') === FALSE && function_exists('shell_exec')) { $mime = @shell_exec($cmd); if (strlen($mime) > 0) { $mime = explode("\n", trim($mime)); if (preg_match($regexp, $mime[(count($mime) - 1)], $matches)) { $this->file_type = $matches[1]; return; } } } if (function_exists('popen')) { $proc = @popen($cmd, 'r'); if (is_resource($proc)) { $mime = @fread($proc, 512); @pclose($proc); if ($mime !== FALSE) { $mime = explode("\n", trim($mime)); if (preg_match($regexp, $mime[(count($mime) - 1)], $matches)) { $this->file_type = $matches[1]; return; } } } } } // Fall back to the deprecated mime_content_type(), if available (still better than $_FILES[$field]['type']) if (function_exists('mime_content_type')) { $this->file_type = @mime_content_type($file['tmp_name']); if (strlen($this->file_type) > 0) // It's possible that mime_content_type() returns FALSE or an empty string { return; } } $this->file_type = $file['type']; } // -------------------------------------------------------------------- } // END Upload Class /* End of file Upload.php */ /* Location: ./system/libraries/Upload.php */
  9. Como melhorar a validação de login

    Deu certo! Criei outro método para validar usuário e dentro do método faço o select para buscar somente o usuário específico. Obrigado! public bool ValidaUsuario(string login, string senha) { using (ControleRotasContext db = new ControleRotasContext()) { var query = db.Usuarios.Where(o => o.UsuarioLogin == login && o.UsuarioSenha == senha).FirstOrDefault(); if (query != null) { return true; } else return false; } }
  10. Checkbox+MySQL salvando na tabela

    Boa noite. Estou enviando outro form de pedidos... HTML : <input name="compra" type="checkbox" id="checkbox" value="1"> ------------------------------------------------------ PHP salvar na base de dados : <? $nome_cliente = $_POST['nome_cliente']; $nome_loja = $_POST['nome_loja']; $site = $_POST['site']; $email = $_POST['email']; $celular = $_POST['celular']; $endereco = $_POST['endereco']; $bairro = $_POST['bairro']; $setor_comercio = $_POST['setor_comercio']; $produtos = $_POST['produtos']; $ponto = $_POST['ponto']; $observacao = $_POST['observacao']; $compra = $_POST['compra']; //Gravando no banco de dados ! conectando com o localhost - mysql $conexao = mysql_connect("pedidos.mysql.uhserver.com", "admin_ouro", "Tk90x"); //localhost é onde esta o banco de dados. if (!$conexao) die ("Erro de conexão com localhost, o seguinte erro ocorreu -> ".mysql_error()); //conectando com a tabela do banco de dados $banco = mysql_select_db("pedidos",$conexao); //nome da tabela que deseja que seja inserida os dados cadastrais if (!$banco) die ("Erro de conexão com banco de dados, o seguinte erro ocorreu -> ".mysql_error()); //Query que realiza a inserção dos dados no banco de dados na tabela indicada acima $query = "INSERT INTO `pedidos`.`pedidos` (`id`, `nome_cliente`, `nome_loja`, `compra`, `site`, `email`, `celular`, `endereco`, `bairro`, `setor_comercio`, `produtos`, `ponto`, `observacao` ) VALUES (NULL, '$nome_cliente', '$nome_loja', '$site', '$email', '$celular', '$endereco', '$bairro', '$setor_comercio', '$produtos', '$ponto', '$compra', '$observacao')"; mysql_query($query,$conexao);
  11. Yesterday
  12. Na verdade sua imagem não está sendo enviada. Me atentei agora que você faz o envio por jquery. o jQuery "não" faz o envio da imagem por si só dessa forma. é preciso uma chamada ali do objeto formData. Antes do seu $.ajax adicione: var nform = new FormData(jQuery('form[name="form_editaradmgm"]')[0]); //e no seu data: data: 'acao=editaradmgm&'+nform, Com isso seu campo FILE será enviado.
  13. Orientação Landscape com Bootstrap

    Poderiam me dizer se existe alguma forma de fazer a orientação em landscape utilizar as classes do padrão sm do Bootstrap ao invés de xs? Obrigado.
  14. Mostrar somente aulas do Mê atual

    Ola Tirei Mas desse forma não vai retorna nada pois a Sql que faz a consulta é a outra.... Abs
  15. Mensagem "Confirmar reenvio de formulário" aparecendo - Ajax

    Verdade. Obrigado
  16. Destruir SESSION conforme a decisão do usuário

    Olá! Estou fazendo alterações em um site imobiliário com base no que o cliente deseja. Neste site, existe a opção de adicionar os imóveis que são encontrados através da busca, à uma lista de favoritos que estranhamente funciona por SESSION e não requer login para este feito. Eu até mudaria tudo pra BD MySQL, porém o site foi construído por uma empresa que ainda concede suporte, mas não realiza todo o pedido dele e a parte SQL nem tem PDO (eu só sei usar PDO). A minha pergunta é: Existe a possibilidade de destruir essa SESSION (remover o imóvel escolhido) pelo próprio usuário? AddFavorite.js /* O anúncio escolhido é adicionado na lista de favoritos, que fica ativo enquanto estiver no site. */ J('document').ready(function(){ /* Adiciona o anúncio nos favoritos. */ J('.btn-favorito').click(function() { var IdAnuncio = J(this).attr('data-id'); J(this).AddFavorite(IdAnuncio); }); J.fn.AddFavorite = function(IdAnuncio){ var id = IdAnuncio; var urlFilterSearch = URLWEB + "/ajax/AddFavorite.php"; if(id != "") { /* Caso o ID tenha sido enviado corretamente, é enviado uma requisição Ajax. */ jQuery.ajax({ type: 'POST', url: urlFilterSearch, data: "action=AddFavorite&id=" + id, beforeSend: function() { jQuery('.ul-resultado').css('display', 'none'); jQuery('.LoadingImage').css('display', 'block'); }, success: function(r) { jQuery('.ul-resultado').css('display', 'block'); jQuery('.LoadingImage').css('display', 'none'); window.alert(r); } }); } else { /* Caso o ID não tenha sido enviado corretamente. */ window.alert("Ocorreu um erro inesperado. Tente novamente mais tarde."); return false; } } }); AddFavorite.php <?php include ('../app.php'); /* Ação para armazenar a ID dos anúncios nos favoritos. */ if(isset($_POST["action"]) and $_POST["action"] == "AddFavorite") { if(isset($_POST["id"]) and !(empty($_POST["id"]))) { /* Verifica se o anúncio realmente existe. */ $id = (int) strip_tags($_POST["id"]); $sql = "select * from team where id = " . $id; $rs = mysql_query($sql); $num = mysql_num_rows($rs); /* Caso tenha encontrado o anúncio. */ if($num >= 1) { /* Inicia a sessão para armazenar os anúncios. */ session_start(); /* Adiciona, apenas se o anúncio não estiver na lista de favoritos. */ if(!(in_array($id, $_SESSION["IdAnuncio"]))) { $_SESSION["IdAnuncio"][] = $id; echo utf8_encode("Anúncio adicionado com sucesso!"); } else { foreach ($_SESSION['IdAnuncio'] as $key => $val) { if($val == $id){ unset($_SESSION['IdAnuncio'][$key]); } } echo utf8_encode("Anúncio removido dos favoritos com sucesso!"); } } else { /* Tratamento de erro! */ return false; } } else { /* Tratamento de erro! */ return false; } } else { /* Tratamento de erro! */ return false; } ?>
  17. Ajuda para inserir um código de hifens no css

    Recomendo ler este tutorial para saber detalhes da hifenação com CSS.
  18. Agendamento de horário em PHP e MySQL

    pode só que eles serão considerados strings e não date. te dei esse exemplo por conta da forma que eu entendi pra resolver o seu problema. porque se usar date você não consegue comparar no php. boa sorte. Se conseguir posta aqui no forúm pra ver como ficou e se precisar só chamar. ; ) abraço.
  19. PAGINA DE CARREGAMENTO E SALVEMENTO DE DADOS

    @Douglas Arrial foi o que eu tentei escrever no código acima. você teria somente 2 arquivos. a tela de login onde o usuário digita a senha e a o arquivo que recebe os dados e exibe o gif de load. Foi assim q eu fiz num código meu. Enquanto o sistema monta a tabela fica um gif mostrando na tela.
  20. Dúvida com SESSION no PHP

    @Maujor agradeço suas dicas foi a primeira vez que postei aqui, geralmente uso só como pesquisa. consegui resolver o meu problema. to até procurando pra fechar o tópico ou marcar como resolvido é não achei. $_SESSION['msg_block'] = array( 'tipo'=>"danger", 'msg' =>"Você precisa logar no sistema!", ); esse e o código que eu uso para receber as mensagens de erro. então isso estava no final da pag_inicial.php (página que estava com problema) Sobre as outras colocações que você colocou, vai ser difícil de explicar. sou meio enrolado e não quero tomar seu tempo. Agradeço mais uma vez a colaboração e as dicas. Um abraço
  21. HTML player ocultar botão volume

    @lucasdona Boa tarde e seja bem-vindo. Para ocultar os controles do player, basta omitir o atributo "controls" da sua tag de "audio" ou "video". Para setar o volume ou personalizar os botões de ações, utilize javascript. Exemplo de como setar o volume para 50%: var vLevel = document.getElementById("ID_DO_ELEMENTO"); vLevel.volume = 0.5; Valores correspondem entre "0.0" (mudo) e "1.0" (100%) - Valor padrão = "1.0". Att.
  22. Somar registros por idade

    Valeu cara, perfeito. a minha maior dificuldade seria contar registros de um banco de dados por idade, nao saberia fazer um processo para calcular a idade de cada registro e depois contar por cada idade encontrada no banco
  23. HTML player ocultar botão volume

    Boa tarde a todos, é possível remover o botão de volume no player do html? Meu objetivo é setar um valor iniciar baixo, não dando opção pro usuário aumentar o volume. Qualquer outra solução também resolveria meu problema, a ideia é não deixar o volume alto. Obrigado a todos.
  24. Servidor PHP para desenvolvimento

    Falando-se de desenvolvimento PHP, é fortemente recomendado que seja em um ambiente linux. Eu sempre utilizei o debian, pois, serve também como um servidor gratuito. Agora, a forma que você irá utilizar o ambiente de desenvovimento, seja ele instalado em uma máquina física ou virtualizado (VirtualBox, Vagrant, VmWare, etc...) depende de você. Um conjunto bastante utilizado é a combinação entre Vagrant e Docker. Como eu estou afastado do desenvolvimento PHP (trabalho com outras tecnologias agora), não posso falar muito sobre eles. Quando eu estava no desenvolvimento, a minha opção foi VirtualBox + Debian, e me supriu muito bem por muitos anos. O que você não pode deixar de lado, é o uso de um servidor linux.
  25. Como Filtra data inicial e data final

    Funcionou!!! Obrigado!!!
  26. Como Filtra data inicial e data final

    Além da falta de apóstrofos, conforme @Jesse&Francinete mostrou. O formato da data deve ser "ano-mes-dia". Ou seja: 2018-02-22 Além disso, prefira a cláusula between ao invés dos operadores >= and <= (repetindo a coluna). Não há diferença alguma entre o uso de between e >= and <= em questões de performance. O between é um short hand do operador >= and <=. Entretanto, há um ganho na leitura e compreensão da query utilizando between, pois, é fácil de entender o sentido dele na query. Ou seja: data_envio BETWEEN '2018-01-01' AND '2018-02-22'
  27. Problemas ao traduzir tema Wordpress (Sydney)

    Olá. estou tentando traduzir o seguinte tema .http://demo.athemes.com/themes/?theme=Sydney consegui traduzir muitas coisas porém quando tento traduzir os títulos "OUR SERVICES" ou os botões "see some more services" simplesmente não consigo. Tentei das seguintes formas 1º Olhei todo o dashboard pra ver se tinha como traduzir da mesma maneira que traduzi o restante do conteúdo mas não acho os títulos lá 2º Abri o dreamweaver e busquei pelos títulos em todas as pastas e arquivos porém não achei em lugar nenhum 3º baixei o plugin "loco translate" mas os títulos e botões também não estão lá e agora ? alguém pode ajudar ?
  28. Go Pricing - Erro casas decimais

    Como é um plugin que você comprou, aconselho ir direito no site da Go Pricing e entrar em contato com o suporte deles.
  1. Mais Resultados
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: