[Livro PHP e MySQL] Dúvidas em geral

Olá @VirgilioAntonioSG , desculpe a demora em responder.

Só adicionar o código abaixo antes de include do template.

if (isset($SESSION[‘listatarefas’])) {
$lista_tarefas = $SESSION[‘listatarefas’];
} else {
$lista_tarefas = array();
}

Meu amigo, quero agradecer sua atenção.
Obrigado, deu certo.

Não estou conseguindo manda o lembrete de email depois que coloquei o servidor hostinger, alguem sabe me dizer se precisa de mais configurações além do livro?

Pessoal, estou tendo problemas com relação a espaços em branco de inputs do formulário. Um exemplo é o input Nome Tarefa que no Capítulo 9 a gente valida se o tamanho da string é > 0. No caso, seu eu não inserir nada, ainda sim vai existir um espaço em branco que vai deixar true essa validação. Alguém sabe o melhor forma de resolver isso ?

Olá, @herbertt. Você recebeu alguma mensagem de erro?

Olá, @fabiomrjr!

Você tem duas opções. A primeira é manter o código HTML em apenas uma linha. Assim:

<input></input>

A segunda é usando a função trim() do PHP para remover os espaços em branco no começo e no fim de uma string antes de fazer a validação. Use a função trim() no POST, assim:

$texto = trim($_POST['nome_do_campo']);

Estou com problemas de acentuação. Estou usando a tag <meta charset="utf-8" /> e o banco tambem criei como utf-8, mas quando incluo o caractere “é” no nome da tarefa , por exemplo, ele aparece como um acento de interrogação.

Oi, @rafaa_figueired0. Confere se você está salvando os arquivos também como UTF-8, isso pode ser uma configuração no seu editor.

Boa noite pessoal!

Estou estudando para me tornar um programador e agora em especial PHP. Estou gostando da linguagem e do Livro.

Porém tenho uma dúvida de iniciante: instalei o XAMPP e rodei o Apache e o MySQL e mesmo assim não consigo fazer com que funcione o teste do XAMPP no localhost. O navegador simplesmente fica em branco. E mesmo salvando arquivos na pasta htdocs, não são executados no navegador.

Alguém sabe de alguma ação que eu possa fazer para corrigir este problema? Já pesquisei bastante sobre e alterei a configuração no Skype para não utilizar a porta 80. Porém não sei como verificar no Windows se eventualmente outro programa está utilizando esta porta.

Caso alguém consiga me ajudar ficarei grato. Preciso corrigir para conseguir executar os exemplos e desafios do livro.

Olá, @marlon_allan81!

Você tentou verificar os logs do apache para ver se ele está recebendo as requisições?
Outra coisa que você pode tentar é usar outra porta para o Apache, como a 8080, por exemplo.

Boa noite Evaldo!

Infelizmente ainda não tenho conhecimento suficiente pra interpretar os logs. Mas ao acessar o log Apache (error.log) apareceu uma relação e havia uma linha assim:

www.example.com:443:0 server certificate does NOT include an ID which matches the server name

Tentei configurar para a Porta 8081, mas também não deu certo. Acredito que devo ter feito algum procedimento errado durante a instalação do Apache e por isso não está abrindo o localhost, mesmo rodando o Apache e o MySQL.

Abaixo a imagem das portas que foram utilizadas:

Ah, acrescento que referente a este erro que localizei no log, fiz uma pesquisa na net e encontrei mensagens informando sobre a porta 80. Porém não sei se há algum outro programa a utilizando.

Quando disse que tentei configurar a Porta 8081, na verdade era a 8080. Está correto como fiz (conforme abaixo)?

#Listen 0.0.0.0:8080
#Listen [::]:8080

ENVIO DE EMAILS.

Implementei a função de envio de emails, porém o gmail bloqueou a mensagem. Segue mensagem.

Olá Rafael,
Alguém acabou de tentar fazer login na sua Conta do Google rafael.figueiredofurini@gmail.com de um aplicativo que não atende aos padrões de segurança modernos.
Detalhes:
domingo, 31 de julho de 2016 10:16 (Horário Padrão de Brasília)
Cascavel - PR, Brasil*
Recomendamos que você use um aplicativo seguro, como o Gmail, para acessar sua conta. Todos os aplicativos desenvolvidos pelo Google atendem a esses padrões de segurança. Por outro lado, o uso de um aplicativo menos seguro pode deixar sua conta vulnerável. Saiba mais.

O Google interrompeu esta tentativa de login, mas você deve revisar seus dispositivos usados recentemente:

Bom tarde,

tenho duas duvidas em relação ao codigo.

Primeiro: no exercicio da pagina 49 nao esta listando. Nao dá nenhum erro.

e nesse trecho de codigo, o %lista_tarefas seria um array de array, ou seja, um array multidimensional?

$_SESSION[’$lista_tarefas’][]= $tarefa;
$lista_tarefas=$_SESSION[‘lista_tarefas’];
}

    if (isset($_SESSION['lista_tarefas']))
    {
        $lista_tarefas = $_SESSION['lista_tarefas'];
    } else
    {
        $lista_tarefas = array();
    }

Olá, @marlon_allan81

Você conseguiu resolver o problema?

Eu pesquisei por “como configurar a porta do apache no xampp” e tive muitos resultados. Você tentou o mesmo?

@rafaa_figueired0, você conseguiu resolver isso?

Tenta pesquisar por “como usar o phpmailer com o gmail” que eu acho que pode ter opções adicionais para isso.

É isso mesmo, @ianpierreg, é um array multidimensional.

Olá Evaldo. Consegui sim. Desculpe não responder antes. Estive muito atarefado esta semana.

Meu problema foi “apenas” a falta de atenção na leitura do livro. Havia salvo os arquivos com a extensão .txt ao invés de .php e por isso não exibia no localhost.

Então não era problema com a porta do apache. De qualquer forma ao menos serviu para eu pesquisar sobre isso e evitar problemas futuros, pois descobri sobre o problema da porta 80 do Skype.

Peço desculpas por ocupar seu tempo com um problema causado por um erro meu.

Abraço!

Legal que você resolveu e melhor ainda que você entendeu o problema :slight_smile:

Bons estudos!

Não estou conseguindo resolver o desafio 3.8, cujo o objetivo é gerar o calendário do ano todo. O problema está na variável $totDias da função calendário e na ultima estrutura while para gerar os 12 meses. Se alguém puder me ajudar eu agradeço.

  <?php
if (date('H') >= 18) {
	echo "Boa Noite! Agora são:  " . date('H:i:s') . "<br>";
}else if ((date('H') >= 12) and (date('H') < 18)) {
	echo "Boa Tarde! Agora são:  " . date('H:i:s') . "<br>";
}else{
	echo "Bom dia! Agora são: " . date('H:i:s') . "<br>";
}

function linha($semana) {
	echo"<tr>";
		foreach($semana as $i) {
			if (isset($i)) {
				if ($i == date('j')) {
					echo "<td class='dia'>{$i}</td>";	
				}else if ((isset($semana['6'])) and ($i == $semana['6'])) {
					echo "<td class='dia'>{$i}</td>";
				}else if  ($i == $semana['0']) {
				echo "<td class='ver'>{$i}</td>";
				}else {
				echo "<td>{$i}</td>";
				}
			}else {
				echo "<td><td>";
			}
		}	
	echo "</tr>";
} 

function calendario($mes) {
	$dia = 1;
	$semana = array();
		$totDias = date("t", mktime(0,0,0, date("$mes"), date("Y"))); //Pegar o total de dias do $mes
		$diaSemana = date("w", mktime(0, 0, 0, date("$mes"), 1, date("Y")));
		for ($i = 0; $i<$diaSemana; $i++) {
			$semana[$i] = "";
		}
		while ($dia <= $totDias) {
			array_push($semana, $dia);

			if (count($semana) == 7) {
				linha($semana);
				$semana = array();
		}
		$dia++;
		}
	linha($semana);
}

$contMes = 1;
while ($contMes <= 12) { //Gerar os 12 meses.
	$mesNome = date("F", mktime(0,0,0, date("$contMes"),  date("Y")));
	Echo "
		<h2>$mesNome<h2>
		<table border='1'>
			<tr>
				<th>Dom</th>
				<th>Seg</th>
				<th>Ter</th>
				<th>Qua</th>
				<th>Qui</th>
				<th>Sex</th>
				<th>Sáb</th>
			</tr>".
	calendario($contMes);
		"</table>";
	$contMes++; 
} 

?>