Trabalhando com sessão de usuário

Pequeno snippet feito em PHP para facilitar o trabalho com sessão de usuário, este script gera uma session com índices contendo tempo e informações do usuário ao logar no site.


//PREVENÇÂO DE CACHE
ob_start();
 
// INICIA A SESSAO
session_start();

// PREVINE ERRO DE ACENTUAÇÂO
echo'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';

// VERIFICA SE OS DADOS DO FORMULARIO EXISTE
if(isset($_POST['sendform'])){
	
	// DEFINE OS INDICE DA SESSÂO 'user'
	$ses['id']		= session_id(); // id da sessão
	$ses['on']		= time(); // pega a hora exata
	$ses['end']		= time() + 30; // adiciona tempo a sessão
	$ses['ip']		= $_SERVER["REMOTE_ADDR"]; // pega ip do usuario
	$ses['nome']	= $_POST['nome'];// nome do usuario
	
	// CRIA A SESSION['user'] E REDIRECIONA
	$_SESSION['user'] = $ses;
	header('Location:'.$_SERVER['PHP_SELF']);
}

// MATA A SESSÂO ATRAVEZ DO LINK
if(!empty($_GET['acao']) && $_GET['acao'] == 'sair'){
	unset($_SESSION['user']); // mata a sessão
	header('Location:'.$_SERVER['PHP_SELF']);
}

// CASO A SESSÂO NÂO EXISTA MOSTRA O FORMULARIO
if(empty($_SESSION['user'])){
	echo'
	<form name="form" action="" method="post">
		Nome:
		<input type="text" name="nome">
		<input type="submit" value="iniciar sessão" name="sendform">
	</form>	
	';
}else{
	
	$tempoLog = $_SESSION['user']['on']; // pega a hora em queo usuario logou
	$tempoAgg = time();// pega o tempo real
	$tempoOnn = $tempoAgg - $tempoLog;// tempo em que o usuario esta logado
	$tempoFim = $_SESSION['user']['end'] - $tempoAgg;// tempo para expirar a sessão
	
	// CONTA SEGUNDOS
	echo'Olá '.$_SESSION['user']['nome'].' você esta logado à '.$tempoOnn.' segundos e seu ip é: '.$_SESSION['user']['ip'].'<br />';
	
	// CONTA MINUTOS USANDO 'round();'
	//echo'Olá '.$_SESSION['user']['nome'].' você esta logado à '.round($tempoOnn/60).' minutos';
	
	
	if($tempoFim <= 0){
		unset($_SESSION['user']);
		header('Refresh: 5;url='.$_SERVER['PHP_SELF']);
		echo'Sua sessao expirou, você sera redirecionado em 5 segundos!';
	}else{
		$_SESSION['user']['end'] = time() + 30;
		//echo'sua sessão expira em '.round($tempoFim/60).' minutos';
		echo'sua sessão expira em '.$tempoFim.' segundos';
		echo'<br /><hr />';
		echo'<a href="?acao=sair">Sair</a>';
	}
	
}

// DEBUG
echo '<hr /><pre>'; print_r($_SESSION); echo'</pre>';
ob_end_flush();


Anúncios

Extensões PDO

Extensão para trabalhar com manipulação de dados no MySQL:


	/*
	*	Conexão com servidor
	*/
	try{
		$con = new PDO("mysql:host=localhost;dbname=exercicio", "root", "");
		$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	}catch(PDOException $e){
		// Caso ocorra uma exceção, exibe na tela
		echo utf8_encode ($e->getMessage());
		$con = null;// fecho a conexão
	}




	/*
	*	Insert 
	*/
	$stmt = $con->prepare("INSERT INTO tabela(nome, email) VALUES(?, ?)");
	$stmt->bindParam(1,$user_nome);
	$stmt->bindParam(2,$user_email);
	$stmt->execute();

	/*
	*	Delete 
	*/
	$stmt = $con->prepare("DELETE FROM tabela WHERE idpessoa = ?");
	$stmt->bindParam(1, $idpessoa);
	$stmt->execute();

	/*
	*	Select 
	*/
	$consulta = $con->prepare("SELECT * FROM tabela");
	$consulta->execute();
	$linha = $consulta->fetchall(PDO::FETCH_OBJ);
	foreach($linha as $listar){
		echo $listar->nome .' - '. $listar->email .' - '. $listar->idpessoa.'<br />';
		
	}

Como utilizar a biblioteca JQuery do WordPress

Definitivamente usar aplicações internamente ou externamente na página functions.php juntamente com a ativação da biblioteca JQuery do WordPress :

<php 
/* Carrega as páginas customizadas de CSS e JS */ 
function registra_scripts() { 
/* CSS */ 
wp_enqueue_style( 'bootstrapstyle', get_template_directory_uri() . '/css/bootstrap.min.css' ); 
wp_enqueue_style( 'bootstrapthemestyle', get_template_directory_uri() . '/css/bootstrap-theme.min.css' ); 
/* JS */ 
wp_enqueue_script( 'bootstrap-script', get_template_directory_uri() . '/js/bootstrap.min.js', array(), true ); 
wp_enqueue_script( 'main-script', get_stylesheet_directory_uri() . '/js/main.js', array(), true ); 
} 
add_action('wp_enqueue_scripts', 'registra_scripts'); 
?> 

E na página heard.php insira dentro da tag <head> o seguinte código!

<?php wp_enqueue_script("jquery"); // ?>
<?php wp_head();// ?> 

Para que tudo funcione corretamente ao utilizar a biblioteca JQuery do WordPress o correto é linka-las somente através da página functions.php até mesmo com os custom scripts caso utilize.

Usando a classe wpdb para ordenar valoes na tabela wp_userdata

Ordenar usuário e valor em uma consulta feita na tabela Wp_usermeta utilizando uma query e um LEFT JOIN.

<?php
   $sql_query =<<<SQL
   SELECT
     {$wpdb->users}.user_email,
     {$wpdb->users}.user_nicename,
     {$wpdb->usermeta}.meta_value
   FROM
     {$wpdb->users}
     LEFT JOIN {$wpdb->usermeta} ON {$wpdb->users}.ID = {$wpdb->usermeta}.user_id
   WHERE 1=1
     AND {$wpdb->users}.user_status = '0'
     AND {$wpdb->usermeta}.meta_key = 'ma_deposito'
    /* AND {$wpdb->usermeta}.meta_value = '50'// busca meta_value pelo valor*/ 
   SQL;
     $users = $wpdb->get_results($sql_query);
   	//header('Content-type:text/plain');
   	// print_r($usersemails);
   	foreach ( $users as $indce => $valor ) :
   		echo 'Apelido: '. $valor->user_nicename . ' - E-mail: '. $valor->user_email. ' - Valor: '. $valor->meta_value.'<br />';
   	endforeach;
   ?>

#wp_usermeta

Adicionando uma Coluna em uma tabela no wordpress

Pequeno script no qual adiciona uma coluna em quaisquer tabela usada no WordPress.

// Pega a tabela wp_users
$minha_query= $wpdb->get_row("SELECT * FROM wp_users");

//Adicionar coluna se não estiver presente.
if(!isset($minha_query->user_fone)){ 
	
 // Sera adicionado a tabela wp_users a coluna user_fone
$wpdb->query("ALTER TABLE wp_users ADD user_fone INT(20) NOT NULL DEFAULT 0");
}

#wordpress

Consulta tabela wp-users e wp-usermeta

Código muito útil para consulta entre as tabelas wp-users e wp-usermeta sendo possível coletar dados de um campo personalizado.

<?php
$sql = "
	SELECT wusers.ID,
		wmeta.user_id, 
		wmeta.meta_key, 
		wmeta.meta_value
	FROM 
		$wpdb->users wusers
	INNER JOIN 
		$wpdb->usermeta wmeta
	ON 
		wusers.ID = wmeta.user_id
	WHERE 
		wmeta.meta_key = 'sua_meta_key'
	ORDER BY 
		wmeta.meta_value ASC
";

global $wpdb;
$users = $wpdb->get_results($sql);

foreach($users as $user){
  $mostrar_dados= get_userdata($user->ID);  
  echo $mostrar_dados->nickname . " : " $mostrar_dados->sua_meta_key."<br />";//
}
?>

#wordpress

Calculo em porcentagem utilizando PHP

Um pequeno script muito útil para ser utilizado em uma barra de progresso, estou utilizando este script juntamente com Bootstrap  em um de meus projetos.


<?php
$meta = 2000; // valor final da arrecadação
$doacao = $_POST['valor']; // valor do deposito

echo 'Nossa meta é de R$ '.$meta.' reais<br />';

if ($doacao > 0){
echo "Total: " . (($doacao / $meta) * 100) . "%" . " ";
}else{
echo '<div style="color:red;">Insira um valor</div>';
}

?>
<form action="" method="post">
<label>Valor deposito</label>
<input type="text" name="valor">
<input type="submit" name="enviar">
</form>

<?php
echo '<br />';
echo '<pre>';
//print_r($_POST);
echo '</pre>';
?>

#php