por Sândler

Retirar o cache do navegador – todas linguagens de programação

fevereiro 15, 2018 em Html, Php por Sândler

The correct minimum set of headers that works across all mentioned clients (and proxies):

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

The Cache-Control is per the HTTP 1.1 spec for clients and proxies (and implicitly required by some clients next to Expires). The Pragma is per the HTTP 1.0 spec for prehistoric clients. The Expires is per the HTTP 1.0 and 1.1 spec for clients and proxies. In HTTP 1.1, the Cache-Controltakes precedence over Expires, so it’s after all for HTTP 1.0 proxies only.

If you don’t care about IE6 and its broken caching when serving pages over HTTPS with only no-store, then you could omit Cache-Control: no-cache.

Cache-Control: no-store, must-revalidate
Pragma: no-cache
Expires: 0

If you don’t care about IE6 nor HTTP 1.0 clients (HTTP 1.1 was introduced 1997), then you could omit Pragma.

Cache-Control: no-store, must-revalidate
Expires: 0

If you don’t care about HTTP 1.0 proxies either, then you could omit Expires.

Cache-Control: no-store, must-revalidate

On the other hand, if the server auto-includes a valid Date header, then you could theoretically omit Cache-Control too and rely on Expires only.

Date: Wed, 24 Aug 2016 18:32:02 GMT
Expires: 0

But that may fail if e.g. the enduser manipulates the operating system date and the client software is relying on it.

Other Cache-Control parameters such as max-age are irrelevant if the abovementioned Cache-Control parameters are specified. The Last-Modified header as included in most other answers here is only interesting if you actually want to cache the request, so you don’t need to specify it at all.

How to set it?

Using PHP:

header("Cache-Control: no-cache, no-store, must-revalidate");// HTTP 1.1.
header("Pragma: no-cache");// HTTP 1.0.
header("Expires: 0");// Proxies.

Using Java Servlet, or Node.js:

response.setHeader("Cache-Control","no-cache, no-store, must-revalidate");// HTTP 1.1.
response.setHeader("Pragma","no-cache");// HTTP 1.0.
response.setHeader("Expires","0");// Proxies.

Using ASP.NET-MVC

Response.Cache.SetCacheability(HttpCacheability.NoCache);// HTTP 1.1.Response.Cache.AppendCacheExtension("no-store, must-revalidate");Response.AppendHeader("Pragma","no-cache");// HTTP 1.0.Response.AppendHeader("Expires","0");// Proxies.

Using ASP.NET:

Response.AppendHeader("Cache-Control","no-cache, no-store, must-revalidate");// HTTP 1.1.Response.AppendHeader("Pragma","no-cache");// HTTP 1.0.Response.AppendHeader("Expires","0");// Proxies.

Using ASP:

Response.addHeader "Cache-Control","no-cache, no-store, must-revalidate"' HTTP 1.1.
Response.addHeader "Pragma","no-cache"' HTTP 1.0.
Response.addHeader "Expires","0"' Proxies.

Using Ruby on Rails, or Python/Flask:

response.headers["Cache-Control"]="no-cache, no-store, must-revalidate"# HTTP 1.1.
response.headers["Pragma"]="no-cache"# HTTP 1.0.
response.headers["Expires"]="0"# Proxies.

Using Python/Django:

response["Cache-Control"]="no-cache, no-store, must-revalidate"# HTTP 1.1.
response["Pragma"]="no-cache"# HTTP 1.0.
response["Expires"]="0"# Proxies.

Using Python/Pyramid:

request.response.headerlist.extend((('Cache-Control','no-cache, no-store, must-revalidate'),('Pragma','no-cache'),('Expires','0')))

Using Google Go:

responseWriter.Header().Set("Cache-Control","no-cache, no-store, must-revalidate")// HTTP 1.1.
responseWriter.Header().Set("Pragma","no-cache")// HTTP 1.0.
responseWriter.Header().Set("Expires","0")// Proxies.

Using Apache .htaccess file:

<IfModulemod_headers.c>
    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0
</IfModule>

Using HTML4:

<metahttp-equiv="Cache-Control"content="no-cache, no-store, must-revalidate"/><metahttp-equiv="Pragma"content="no-cache"/><metahttp-equiv="Expires"content="0"/>

HTML meta tags vs HTTP response headers

Important to know is that when a HTML page is served over a HTTP connection, and a header is present in both the HTTP response headers and the HTML <meta http-equiv> tags, then the one specified in the HTTP response header will get precedence over the HTML meta tag. The HTML meta tag will only be used when the page is viewed from local disk file system via a file:// URL. See also W3 HTML spec chapter 5.2.2. Take care with this when you don’t specify them programmatically, because the webserver can namely include some default values.

Generally, you’d better just not specify the HTML meta tags to avoid confusion by starters, and rely on hard HTTP response headers. Moreover, specifically those <meta http-equiv> tags are invalidin HTML5. Only the http-equiv values listed in HTML5 specification are allowed.

Verifying the actual HTTP response headers

To verify the one and other, you can see/debug them in HTTP traffic monitor of webbrowser’s developer toolset. You can get there by pressing F12 in Chrome/Firefox23+/IE9+, and then opening the “Network” or “Net” tab panel, and then clicking the HTTP request of interest to uncover all detail about the HTTP request and response. The below screenshot is from Chrome:

Chrome developer toolset HTTP traffic monitor showing HTTP response headers on stackoverflow.com

I want to set those headers on file downloads too

First of all, this question and answer is targeted on “web pages” (HTML pages), not “file downloads” (PDF, zip, Excel, etc). You’d better have them cached and make use of some file version identifier somewhere in URI path or querystring to force a redownload on a changed file. When applying those no-cache headers on file downloads anyway, then beware of the IE7/8 bug when serving a file download over HTTPS instead of HTTP. For detail, see IE cannot download foo.jsf. IE was not able to open this internet site. The requested site is either unavailable or cannot be found.

Reference: https://stackoverflow.com/questions/49547/how-to-control-web-page-caching-across-all-browsers

por Sândler

Codificação de caracteres em url (tabela conversão)

abril 24, 2015 em Html por Sândler

Codificação de caracteres em endereços URL

Quando passam variáveis em endereços URL, às vezes, é necessário codificar certos caracteres. Isto é, substituir uma caracter por seu código ASCII em formato hexadecimal. A seguir, apresentam os os caracteres que se codificam mais frequentemente:

Tabela de caracteres frequentes

Caracter Código Caracter Código Caracter Código Caracter Código
(espaço) %20 ? %3f & %26 % %25
# %23 / %2f < %3c > %3e
: %3a / %2f | %7c ; %3b

Script de conversão

Tabela completa

æ

apagar
tab
nova linha

salto de linha

espaço
!

#
$
%
&

(
)
*
+
,
-
.
/

%00
%01
%02
%03
%04
%05
%06
%07
%08
%09
%0a
%0b
%0c
%0d
%0e
%0f
%10
%11
%12
%13
%14
%15
%16
%17
%18
%19
%1a
%1b
%1c
%1d
%1e
%1f
%20
%21
%22
%23
%24
%25
%26
%27
%28
%29
%2a
%2b
%2c
%2d
%2e
%2f
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
%30
%31
%32
%33
%34
%35
%36
%37
%38
%39
%3a
%3b
%3c
%3d
%3e
%3f
%40
%41
%42
%43
%44
%45
%46
%47
%48
%49
%4a
%4b
%4c
%4d
%4e
%4f
%50
%51
%52
%53
%54
%55
%56
%57
%58
%59
%5a
%5b
%5c
%5d
%5e
%5f
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~

€


ƒ




ˆ

Š

Œ

Ž

%60
%61
%62
%63
%64
%65
%66
%67
%68
%69
%6a
%6b
%6c
%6d
%6e
%6f
%70
%71
%72
%73
%74
%75
%76
%77
%78
%79
%7a
%7b
%7c
%7d
%7e
%7f
%80
%81
%82
%83
%84
%85
%86
%87
%88
%89
%8a
%8b
%8c
%8d
%8e
%8f







˜

š

œ

ž
Ÿ

¡
¢
£

¥
|
§
¨
©
ª
«
¬
¯
®
¯
°
±
²
³

µ

·
¸
¹
º
»
¼
½
¾
¿

%90
%91
%92
%93
%94
%95
%96
%97
%98
%99
%9a
%9b
%9c
%9d
%9e
%9f
%a0
%a1
%a2
%a3
%a4
%a5
%a6
%a7
%a8
%a9
%aa
%ab
%ac
%ad
%ae
%af
%b0
%b1
%b2
%b3
%b4
%b5
%b6
%b7
%b8
%b9
%ba
%bb
%bc
%bd
%be
%bf
À
Á
Â
Ã
Ä
Å
Æ
Ç
È
É
Ê
Ë
Ì
Í
Î
Ï
Ð
Ñ
Ò
Ó
Ô
Õ
Ö

Ø
Ù
Ú
Û
Ü
Ý
Þ
ß
à
á
â
ã
ä
å
æ
ç
è
é
ê
ë
ì
í
î
ï

%c0
%c1
%c2
%c3
%c4
%c5
%c6
%c7
%c8
%c9
%ca
%cb
%cc
%cd
%ce
%cf
%d0
%d1
%d2
%d3
%d4
%d5
%d6
%d7
%d8
%d9
%da
%db
%dc
%dd
%de
%df
%e0
%e1
%e2
%e3
%e4
%e5
%e6
%e7
%e8
%e9
%ea
%eb
%ec
%ed
%ee
%ef
ð
ñ
ò
ó
ô
õ
ö
÷
ø
ù
ú
û
ü
ý
þ
ÿ
%f0
%f1
%f2
%f3
%f4
%f5
%f6
%f7
%f8
%f9
%fa
%fb
%fc
%fd
%fe
%ff
por Sândler

Fazer impressão de uma determinada div

novembro 8, 2013 em Html, JavaScript, JQuery por Sândler

 Esses exemplo abaixo é para que possamos fazer uma impressão de uma determinada tela que já se encontra em html, 
pegando o mesmo formato que está printada e jogando o mesmo em html para jogar em um Popup para fazer a impressão.

Exemplo:
<html>
<head>
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.1.min.js" > </script>
<script type="text/javascript">

    function PrintElem(elem)
    {
        Popup($(elem).html());
    }

    function Popup(data)
    {
        var mywindow = window.open('', 'my div', 'height=400,width=600');
        mywindow.document.write('<html><head><title>my div</title>');
        /*optional stylesheet*/ //mywindow.document.write('<link rel="stylesheet" href="main.css" type="text/css" />');
        mywindow.document.write('</head><body >');
        mywindow.document.write(data);
        mywindow.document.write('</body></html>');

        mywindow.print();
        mywindow.close();

        return true;
    }

</script>
</head>
<body>

<div id="mydiv">
    This will be printed. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque a quam at nibh adipiscing interdum. Nulla vitae accumsan ante.
</div>

<div>
    This will not be printed.
</div>

<div id="anotherdiv">
    Nor will this.
</div>

<input type="button" value="Print Div" onclick="PrintElem('#mydiv')" />

</body>
</html>

Criado por: stackoverflow
por Sândler

Máscara de entrada de Inscrições Estaduais para cada Estado

junho 4, 2013 em Html, JavaScript, JQuery por Sândler

Segue as informações:

1    RS    RIO GRANDE DO SUL    ###-#######
2    SC    SANTA CATARINA            ###.###.###
3    PR    PARANÁ                    ########-##
4    SP    SÃO PAULO                ###.###.###.###
5    MG    MINAS GERAIS            ###.###.###/####
6    RJ    RIO DE JANEIRO            ##.###.##-#
7    ES    ESPÍRITO SANTO        ###.###.##-#
8    BA    BAHIA                    ###.###.##-#
9    SE    SERGIPE                #########-#
10    AL    ALAGOAS                #########
11    PE    PERNAMBUCO            ##.#.###.#######-#
12    PB    PARAÍBA                    ########-#
13    RN    RIO GRANDE DO NORTE    ##.###.###-#
14    PI    PIAUÍ                    #########
15    MA    MARANHÃO                #########
16    CE    CEARÁ                    ########-#
17    GO    GOIÁS                    ##.###.###-#
18    TO    TOCANTINS                ###########
19    MT    MATO GROSSO            #########
20    MS    MATO GROSSO DO SUL    #########
21    DF    DISTRITO FEDERAL        ###########-##
22    AM    AMAZONAS                ##.###.###-#
23    AC    ACRE                    ##.###.###/###-##
24    PA    PARÁ                    ##-######-#
25    RO    RONDÔNIA                ###.#####-#
26    RR    RORAIMA                ########-#
27    AP    AMAPÁ                    #########

Conteúdo retirado de: http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=332317

 

por Sândler

Máscara para todos telefones de São Paulo, tanto fixo como celular.

junho 4, 2013 em Html, Java, JavaScript, JQuery por Sândler

Todos os telefones que necessita ser do tipo celular, que pode ter o “9″ na frente do número, você deixa com a classe “tel”, como por exemplo:

<input type=”text” value=”” class=”tel” />

Na parte do JavaScript, você deve ter o Jquery e o jquery.mask.js.

Abaixo segue o código :

$(function(){

      $('.tel').mask('(99) 9999-9999');
      $('.telCel').mask('(99) 99999-9999');

       $.fn.setCursorPosition = function(pos) {
        this.each(function(index, elem) {
          if (elem.setSelectionRange) {
            elem.setSelectionRange(pos, pos);
          } else if (elem.createTextRange) {
            var range = elem.createTextRange();
            range.collapse(true);
            range.moveEnd('character', pos);
            range.moveStart('character', pos);
            range.select();
          }
        });
        return this;
      };

       $(".tel").keyup(function(){
           var cel = $(this).val().substring(1, 3);
           var cel2 = $(this).val().substring(5, 6);
           var cel3 = $(this).val().substring(9, 10);
           if(cel == 11 && cel2 != '_' && cel2 == '9'  && cel3 == '-'){
               $(this).removeClass('tel');
               $(this).addClass('telCel');
               $(this).unmask();
               $(this).mask("(11) 99999-9999", [], "(11) _____-____");
               $(this).val("(11) _____-____");
               $(this).setCursorPosition(5);

           }else if(cel == 11 && cel2 != '_' && cel2 != '9'  && cel3 == '_'){
               $(this).removeClass('telCel');
               $(this).addClass('tel');
               $(this).unmask();
               $(this).mask("(99) 9999-9999", [], "(__) _____-____");
               $(this).val("(__) ____-____");
               $(this).setCursorPosition(1);
           }
       });
});
por Sândler

Removendo e adicionando Class com Jquery

maio 24, 2013 em Css, Html, JQuery por Sândler

Removendo e adicionando Class com Jquery

 

Adicionando uma class nas Tags P

$(‘p’).addClass(‘oneClass’)

 

Removendo uma class nas Tags P

$(‘p’).removeClass(‘myClass yourClass’)

 

Exemplo de exclusão de 2 class e inclusão de 1 class em um único comando:

$(‘p’).removeClass(‘myClass noClass’).addClass(‘yourClass’);

 

Este exemplo remove o nome da classe do penúltimo <li> do último <li> .

$(‘li:last’).removeClass(function(){

return $(this).prev().attr(‘class’);

});

por Sândler

Funcionalidade Attr e removeAttr para manipulação html via Jquery

maio 24, 2013 em Html, JQuery por Sândler

Funcionalidade Attr e removeAttr para manipulação html via Jquery
Abaixo segue exemplos da Attr e removeattr:
jQuery.Attr
Descrevendo um título para a imagem
$("img").attr('title','titulo teste');
Adicionando no attr com (N) Atributos
$("img").attr({
src: 'folder/imagem.jpg',
title:'titulo teste',
border: '1'
});
Coletando o título da da imagem
var title = $("img").attr('title');


jQuery.removeAttr
Removendo o atributo "titulo" da imagem
$("img").removeattr('title');


Referência: http://www.johnmarques.com.br/jquery/jquery-attr-e-removeattr-manipulando-as-dos-elementos-html/
por Sândler

Como corrigir o Erro a:hover ou li:hover em CSS

novembro 21, 2012 em Css, Html por Sândler

Para correção do erro no a:hover ou li:hover que funciona normal no Firefox e no IE não funciona, basta adicionar no início do documento o seguinte dado:

 

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” dir=”ltr” lang=”en-US”>

 

por Sândler

Resetar o Select Html com Jquery

março 30, 2012 em Html, JavaScript, JQuery por Sândler

/* função pronta para ser reaproveitada, caso queria adicionar mais combos dependentes */
        function resetaCombo( el )
        {
                $("select[name='"+el+"']").empty();//retira os elementos antigos
                var option = document.createElement('option');
                $( option ).attr( {value : '0'} );
                $( option ).append( 'Escolha' );
                $("select[name='"+el+"']").append( option );
        }
por Sândler

contar e limitar caracteres no textarea em jquery

outubro 24, 2011 em Html, JavaScript, JQuery por Sândler

Segue um exemplo de como implementar o limitador de caracteres em Jquery

Antes é necessário adicionar o Jquery e o plugin Jquery Plugin Limit

 

Exemplo COM contador:

<textarea id="txt_observacao">Este é um teste</textarea>
Restam <
span id="contador_char"></span> caracteres a serem digitados.


<script type="text/javascript">
$(function(){
$('#txt_observacao').limit('255','#contador_char');
})

</script>

 

Exemplo SEM contador:

<textarea id="txt_observacao">Este é um teste</textarea>

<script type="text/javascript">
$(function(){
$('#txt_observacao').limit('255');
})

</script>

 

 

Site de Referência: http://www.cssnolanche.com.br/contar-e-limitar-caracteres-em-textarea/