Bora ajudar o programador a transformar café em código?

Mostrando postagens com marcador Script em PHP. Mostrar todas as postagens
Mostrando postagens com marcador Script em PHP. Mostrar todas as postagens

Quantos dígitos tem um número? Script em PHP

13. Faça uma função que informe a quantidade de dígitos de um determinado número inteiro informado.

Questão de nossa lista de exercícios de funções em PHP.

A Função strlen()

Quando o usuário digita algo via formulário, ele está introduzindo uma string.
Assim, ao invés de digitar o número 2112, ele está digitando a string:
"2112"

Então, para calcular o número de dígitos, temos que calcular tamanho de caracteres da string, e para isso usamos a função strlen() (string length):
  function tamanho($n){
   return strlen($n);
  }

Número de dígitos de um número

E se ao invés de uma string for um número?
Simples, transforma em string.

Se $n for um número, transformamos ele em string assim:
$n = (string)$n

Ou assim:
$n .=""

Depois é só aplicar como argumento na função strlen.

Números perfeitos em PHP (script)

Neste tutorial do nosso curso de PHP, vamos resolver uma questão de nossa lista de exercício de funções:


7. Um número é dito perfeito quando ele é igual a soma de seus fatores. Por exemplo, os fatores de 6 são 1, 2 e 3 (ou seja, podemos dividir 6 por 1, por 2 e por 3) e 6=1+2+3, logo 6 é um número perfeito. Escreva uma função que recebe um inteiro e dizer se é perfeito ou não. Em outra função, peça um inteiro n e mostre todos os números perfeitos até n.

Como detectar números perfeitos

Vamos receber um número $n do usuário.

Dentro da função soma(), vamos ter uma variável chamada $divisores, que inicialmente é 0, ela vai receber a soma de todos os divisores.

Depois, com um laço, vamos dividir o número do usuário por 1, por 2, por 3...até por $n-1
Cada vez que for divisor, somamos esse números na $divisores.

Ao final da função, retornamos $divisores, que é a soma dos divisores.

Fora da função, verificamos se $n é igual ao retorno da função, se for, o número é dito perfeito:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action=ae method="get">
  Numero<input type="number" name="numb" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php
  $n = $_GET['numb'];
  
  if($n == soma($n))
   echo "É perfeito";
  else
   echo "Não é perfeito";
   
  function soma($n){
   $divisores=0;
   for($count=1 ; $count<$n ; $count++)
    if($n % $count==0)
     $divisores += $count;
   return $divisores;
  }
 ?>
 </body>
</html>
Teste com alguns números perfeitos:
6, 28, 496 e 8.128

Como redirecionar para outra página em PHP

Se em algum momento de seu sistema web você precisar redirecionar o usuário para a página atual para outra, é muito simples, bastando usar a função header(), que lida com esse tipo de assunto.

Como redirecionar em PHP

No exemplo abaixo, redirecionamos o usuário para a home do PHP Progressivo:
 <?php
  header('Location: https://www.phpprogressivo.net/');
  die();
 ?>
Esse comando é muito utilizado para redirecionar o usuário para uma outra página do site, após ele fazer uma compra, por exemplo.

O die() é importante para terminar a execução do script, para se assegurar que nada mais depois do redirecionamento seja executado.

Mais informações:
http://php.net/manual/pt_BR/function.header.php
http://php.net/manual/pt_BR/function.die.php

Como Exibir Informações do Browser do Usuário (Script PHP)

Browser é o programa que usamos para acessar a internet, como Chrome, Firefox, Opera, Internet Explorer entre outros.

Ao acessarmos uma URL, essas URL's solicitam ao browser informações do usuário.
É possível exibir para o usuário as informações dele, de user agent, ou seja, o agente do usuário, por exemplo.

Nessa informação, é dito o navegador do usuário, seu sistema operacional, de quantos bits é seu SO, WebKit e outras informações.

Tudo isso está armazenado em uma simples variável, a:
$_SERVER['HTTP_USER_AGENT']

Veja como usar:

Script em PHP: Informações do navegador do cliente

<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body> 
 <?php
  echo "Informações do browser (User agente):" . $_SERVER ['HTTP_USER_AGENT'];
 ?>
 </body>
</html>

Script PHP: Informa o IP do usuário

IP (Internet Protocol) é um número que todo dispositivo que está conectado a uma rede recebe, de modo a identificá-lo unicamente. Internet que usa o protocolo do tipo IP, claro.

Costumava ser um número de 32 bits (IPv4), mas com o crescimento da grande rede, teve que ser alterado para 128 bits (IPv6).

Para melhor entendimento de humanos, são divididos em 4 blocos e são números do tipo:
http://192.168.1.2

IP do usuário (Script em PHP)

 <?php
  //verifica se o IP é do tipo correto
  if (!empty($_SERVER['HTTP_CLIENT_IP']))   
    {
   $ip_address = $_SERVER['HTTP_CLIENT_IP'];
    }
  //verifica se o IP é de algum proxy
  elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))  
    {
   $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
  //verifica se o IP é de um endereço remoto
  else
    {
   $ip_address = $_SERVER['REMOTE_ADDR'];
    }
  echo $ip_address;
 ?>

Três números em Ordem Crescente

"Faça um script que leia três números inteiros e mostre eles na ordem crescente"

Estudar pela Apostila de PHP

Trocar valor de duas variáveis

Antes de resolvermos esse script, precisamos aprender um algoritmo simples, de trocar o valor de duas variáveis.

Vamos supor que:
$a = 1;
$b = 2;

Queremos que fique:
$a = 2;
$b = 1;

O primeiro passo é faze $a receber valor de $b, né?
$a = $b;

Agora só fazer o contrário, fazer $b receber o valor de $a.
$b = $a;

Simples, não?
Não!

A segunda expressão tá errada, pois agora o valor de $a mudou pouco antes!

A solução pra isso é usar uma variável temporária.
O jeito certo de inverter valores é:
$temp = $a;
$a = $b;
$b = $a;

Prontinho, aquele valor de $a que tínhamos no começo fica armazenado na variável $tempo.
Depois, o $b pega o valor desse $temp

Três Números em Ordem Crescente

Vamos pegar três números de um formulário HTML.

Inicialmente, dizemos que o menor valor é o primeiro, o valor do meio é o segundo número e o maior número é o terceiro digitado:
$menor = $_GET['numero1'];
$meio = $_GET['numero2'];
$maior = $_GET['numero3'];

Agora vem a lógica.
Vamos pegar as variáveis duas a duas.

Primeiro pegamos as duas primeiras: $menor e $meio
Se o valor de $meio for menor que $menor, devemos inverter o valor delas!

Agora vamos comparar $menor e $maior
Se $maior for menor que $menor, invertermos as variáveis.

Por fim, comparamos $meio e $maior
Se $maior for menor que $meio, devemos inverter os valores.

Veja como ficou nosso código:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Numero 1:  <input type="text" name="numero1" /><br />
  Numero 2:  <input type="text" name="numero2" /><br />
  Numero 3:  <input type="text" name="numero3" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $menor = $_GET['numero1'];
  $meio = $_GET['numero2'];
  $maior = $_GET['numero3'];

  if($meio < $menor){
   $temp=$menor;
   $menor=$meio;
   $meio=$temp;
  }
  
  if($maior < $menor){
   $temp=$menor;
   $menor=$maior;
   $maior=$temp;
  }
  
  if($maior < $meio){
   $temp=$meio;
   $meio=$maior;
   $maior=$temp;
  }
  
  echo "$menor < $meio < $maior";
 ?>
 </body>
</html>

Ano Bissexto - Como saber se é ? Scripts em PHP

Neste tutorial de PHP, vamos te mostrar o algoritmo em PHP que nos diz se um ano é bissexto ou não, usando operadores lógicos.

Exercícios na Apostila de PHP

Algoritmo do Ano Bissexto em PHP

Normalmente, temos 365 dias no ano, onde o mês de fevereiro possui 28 dias.
Porém, a cada 4 anos adicionamos um dia extra, tendo fevereiro 29 dias e o ano 366 dias.

Existem uma lógica, um algoritmo, para saber se um ano vai ser bissexto ou não.
O algoritmo é o seguinte:

Todo ano múltiplo de 400, é sempre bissexto.
Exemplo: 2000, 1600, 1200, etc

OU:

Os anos múltiplos de 4 são bissextos, exceto se forem múltiplos de 100 e não forem de 400.
Exemplo: 1996, 2000, 2004, 2008, 2012, 2016 etc

Script em PHP: Ano Bissexto
Múltiplo de 400:
$ano % 400 == 0: Retorna TRUE

OU
Múltiplo de 4, exceto de 100:
($ano % 4 == 0 && $ano % 100 != 0 ): Retorna TRUE se for

Ou seja, se a expressão a primeira expressão acima for verdade OU a segunda, o ano é bissexto. Se não for TRUE, não será bissexto.

Nosso código HTML + PHP fica:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Ano:  <input type="number" name="year" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $ano = $_GET['year'];
  
  if ( ($ano%4==0 && $ano%100!=0) || $ano%400 == 0)
   echo "$ano é bissexto";
  else
   echo "$ano não é bissexto";
 ?>
 </body>
</html>

Script em PHP: Usando o PHP para identificar anos bissextos

O PHP nativo já possui diveeeersas funções e coisas feitas, prontas pra você simplesmente usar.
No caso, vamos usar a função date() ,que tem várias funcionalidades para trabalharmos com datas.

Não se preocupe, iremos estudar as datas mais adiante em nosso curso.
Script:

<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Ano:  <input type="number" name="year" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $ano = $_GET['year'];
  $leap = date('L', mktime(0, 0, 0, 1, 1, $ano));
  
  if ($leap)
   echo "$ano é bissexto";
  else
   echo "$ano não é bissexto";
 ?>
 </body>
</html>

Quantos Dias Possui o Mês (Script PHP)

Neste tutorial de PHP, vamos criar um script que diz quantos dias o mês possui, usando apenas lógica de programação e o comando SWITCH.

Mais exercícios de PHP na Apostila

Exercício - Quantos dias o mês possui

Crie uma página WEB onde o usuário digita números de 1 até 12, representando o mês do ano e seu servidor PHP deve retornar o número de dias que possui nesse mês. Desconsidere os anos bissextos.

Sabemos que:
Meses com 31 dias: Janeiro (1), Março (3), Maio (5), Julho (7), Agosto (8), Outubro (10) e Dezembro (12)
Meses com 30 dias: Abril (4), Junho (6), Setembro (9) e Novembro (11)
Meses com 28 dias: Fevereiro (2)

A solução mais óbvia é simples:

case 1:
   echo "31 dias";
   break;
case 2:
   echo "28 dias";
   break;
...
case 12:
   echo "31 dias";
   break;
default:
   echo "Mês inexistente";

Porém nosso código ia ficar muito longo e vários cases seriam repetitivos

Script em PHP Otimizado

Lembra que falamos que se não usar o break os cases vão se acumulando?
Pois é, podemos nos utilizar dessa funcionalidade para escrever um código melhor, mais limpo, veja:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Mês:  <input type="number" name="month" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $mes = $_GET['month'];
  
  switch($mes){
   case 1: case 3: case 5:
   case 7: case 8: case 10: case 12:
    echo "Mês $mes tem 31 dias";
    break;
   case 4: case 6:
   case 9: case 11:
    echo "Mês $mes tem 30 dias";
    break;   
   case 2:
    echo "Mês $mes tem 28 dias";
    break;
   default:
    echo "Mês inexistente";
  }
 ?>
 </body>
</html>

Script em PHP - Melhor Solução

Não se assuste se você programar scripts grandes, extensos, confusos e longos...e aí vem um filho de uma mãe e resolve com pouquíssimas linhas.

Faz parte do aprendizado.
Vamos te mostrar uma maneira bem mais simples e menor de se resolver esse problema.
Usaremos a técnica de acumular novamente.

O número de dias vai ficar armazenado na variável $dias, inicializada com 0.
Primeiro, deixamos o case 2 lá embaixo, perto do default.
No código desse case, somamos 28 a $dias.

Como não usaremos break, sempre essa opção de case 2 vai acontecer, ou seja, sempre somaremos 28 na variável $dias.

Acima dela, vamos adicionar 2, para o resultado dar 30 nos meses 4, 6, 9 e 11.
E bem no começo, adicionamos 1, para dar resultado 31 nos meses restantes.

Veja como fica nosso código lindo e chuchu-beleza:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Mês de 1 até 12:  <input type="number" name="month" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $mes = $_GET['month'];
  $dias = 0;
  
  switch($mes){
   case 1: case 3: case 5:
   case 7: case 8: case 10: case 12:
    $dias = $dias + 1;
   case 4: case 6:
   case 9: case 11:
    $dias = $dias + 2;
   case 2:
    $dias = $dias + 28;
  }
  echo "Mês $mes possui $dias dias";
 ?>
 </body>
</html>
A expressão:
$dias = $dias + x

Significa que o novo valor da variável $dias é o anterior mais x.

Veja também

O melhor PC para programar

O melhor celular para programar