Sugestões de postagens

Pessoal estou precisando de sugestões sobre o que postar dentro dos assuntos (PHP, POO, MySQL, M$SQL, C#, HTML, CSS, JavaScript e AJAX). Então , através desse post, gostaria que vocês me enviassem dúvidas e/ou sugestões para que eu possa resolver o problema de vocês e para ajudar  as pessoas que tenham problemas semelhantes, postando as soluções para esses problemas!

Obrigado!

Anúncios

Diferença entre require(), require_once(), include, include_once()

include(): Tenta incluir uma página. Caso dê algum erro, o script retorna um warning (aviso) e prossegue com a execução do script. Aceita a passagem de variáveis (GET) na string. Pode ser utilizado em uma estrutura de condicionais que terá seu efeito perpetuado todas as vezes que for chamado.

Require(): Tenta incluir uma página. Caso dê algum erro, o script retorna um fatal error(erro fatal)  e aborta a execução. Aborta mesmo, já era, não roda mais nada dali em diante. Não aceita a passagem de variáveis (GET) na string. Não recomendo que utilizem nas estruturas condicionais, a menos que se deseje o efeito de ser executada apenas uma vez.

include_once() e require_once(): Idênticas as suas funções simples, porém se o arquivo referenciado foi incluso na página anteriormente, a função retorna ‘false’ e o arquivo não é incluído. É bom quando temos muitos includes e já estamos perdidos, sem saber o que está incluindo o que.

Não me recordo em qual blog encontrei o texto acima, contudo os créditos não são meus!

Sistema de Login PHP / PHP Login System

E por que não um sistema de login?
Why not a login system?

Isso aí pessoal depois de um tempo sem conseguir postar coisas interessantes vamos agora a um sistema de login. Sistema esse baseado em tudo o que vimos aqui no blog.
Folks after a some time without my blog, now I come back with a login system. This system is based in early learned lessons here.

Como o nosso banco de dados e as classes já estão prontos, vamos ao próximo passo que é a tela que pede os dados para login (Isso você entendeu bem, usaremos o que aprendemos até agora!).
As our data base and classes are ready, we can move onto the next step which is the screen that asks the details to log in (If you understood well, we will use what we learned until now!).

Código/Code:

<html>
<head>
<title>Login</title>
</head>
<body>
<div id="msgError">
<?php
if (isset($_GET["r"]))
if ($_GET["r"] == "1")
echo("Login e/ou senha inv&aacute;lidos - Login or password invalid");
?>
</div>
<form name="form1" method="post" action="loggin.php">
<table width="300">
<tr>
<th colspan="2">Login</th>
</tr>
<tr>
<th>usu&aacute;rio/user:</th>
<td><input name="textLogin" class="box" type="text" id="textLogin" size="20" maxlength="300"></td>
</tr>
<tr>
<th>senha/password:</th>
<td><input name="textPwd" class="box" type="password" id="textPwd" size="20" maxlength="20"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="Submit" value="Entrar/Enter"></td>
</tr>
</table>

</form>
</body>
</html>

Arquivo/File: login.php.

Como podem ver teremos agora o arquivo loggin.php citado como action no form html.
Now, you can see that we have the file loggin.php called as action in form html.

Código/Code:

 <?php
 /*!	Verify if user exists and test their username/email and password.
 *	@author Danilo Lutz <danilo@infoideia.com>
 *	@date 15/09/2009
 */
 include_once("class/connection/connection.class.php"); // Pen atention for your directories.
 include_once("class/user/user.class.php");

$login = "";
 $password = "";
 if (isset($_POST["textLogin"]) && isset($_POST["textPwd"])) {
 $login = $_POST["textLogin"];
 $password = $_POST["textPwd"];

$objConnection = new Connection;
 $connection = $objConnection->connect('localhost', 'root', 'vertrigo', 'teatching');

$isValid = false;
 $objUser = new User($connection, null);
 $isValid = $objUser->validateUser($login, $password); //Verify if is a valid user.

if ($isValid) {
 session_start();  // Puts data in a Session for future access.
 $_SESSION["idUser"] = $objUser->getId();
 $_SESSION["name"] = $objUser->getName();
 $_SESSION["email"] = $objUser->getEmail();
 header("Location: youAdmPage.php"); // Redirect to your adm start page.
 }
 else
 header("Location: login.php&r=1"); // Returns to login page, showning the error message.

$objConnection->disconnect($connection);
 }
 else
 header("Location: login.php");
 ?>
 

Arquivo/Files: loggin.php.

Ah! Claro não poderia deixar de falar que teremos de verificar se o usuário tem acesso a página chamada, sempre no início da mesma. Vamos para a verificação:
Oh, course! I must say that we will have to verify if the user has access to the asked page always in the its beginning. Moving on to the verifying:

Código/Code:

 <?php
 session_start();

$logged = 0;
 if (isset($_SESSION["idUser"]) || isset($_SESSION["name"])) { // Testing session for verifiy if it's was setted.
 $logged = 1;
 }
 // If user was not logged. So will be redirected for login page.
 if ($logged == 0) {
 header("Location: login.php");
 exit;
 }
 ?>
 

Arquivo/Files: verify.php.

Segue agora, o código para utilizar o verify.php.
Here it is, the code to be used verify.php.

Código/Code:

 <?php
 include_once("verify.php");
 ?>
 

Espero que tenham gostado e entendido, mas cabe como execício a vocês testarem, ver se o código está funcionando e me avisarem caso não estiver, pois a tarefa de testar deixei para vocês, meus amigos! 🙂
And the last one at last: I hope you guys had enjoyed and understood, but it is totally up to you to test it, if the code is working and let me know if it isn’t, because the testing part depends only on you, my friends. 🙂

:mrgreen: É bom, pois assim vão aprendendo a lidar com o PHP.
:mrgreen: Yeah, then you learn how to deal with PHP.

Criando uma classe de Inserção, Atualização e Exclusão/Creating a Insert, Update and Delete class.

Considerando que vocês saibam utilizar o MySql, faremos hoje, uma classe, que manipula dados em uma tabela.
Considering that you know how to use MySQL, we will make a data manipulation class today.

Primeiro criamos a tabela a ser manipulada, neste caso a tabela user.
First we create the table, in this case, the user table

Código/Code:

CREATE TABLE IF NOT EXISTS `user` (
 `id` int(11) NOT NULL auto_increment,
 `name` varchar(100) NOT NULL,
 `email` varchar(100) NOT NULL,
 `login` varchar(100) NOT NULL,
 `password` varchar(300) NOT NULL,
 PRIMARY KEY  (`id`)
 )
 

Bom agora que já criamos a tabela, vamos à classe
Well, now we have created the table, let’s go to the class.

Código/Code:

 /*!
 *	This class is used to manipulate the users data.
 *	@author Danilo Lutz <danilo@infoideia.com>
 *	@date 16/07/2009
 */
 class User {
 private $id;
 private $name;
 private $email;
 private $login;
 private $password;
 private $connection;

 public function getId()          { return $this->id; }
 public function getName()        { return $this->name; }
 public function getEmail()       { return $this->email; }
 public function getLogin()       { return $this->login; }
 public function getPassword()    { return $this->password; }

 public function setName($v)        { $this->name = $v; }
 public function setEmail($v)       { $this->email = $v; }
 public function setLogin($v)       { $this->login = $v; }
 public function setPassword($v)    { $this->password = $v; }

/*!
 * Helps to organize the code. It's a constructor part.
 */
 private function getUser($id) {
 $query = "SELECT id, name, email, login, password, idusergroup FROM user WHERE id=$id";
 $arrayCollection = mysql_query($query, $this->connection);
 $total = ($arrayCollection) ? mysql_num_rows($arrayCollection): 0;
 if ($total == 1) {
 $this->id = mysql_result($arrayCollection, 0, "id");
 $this->name = mysql_result($arrayCollection, 0, "name");
 $this->email = mysql_result($arrayCollection, 0, "email");
 $this->login = mysql_result($arrayCollection, 0, "login");
 $this->password = mysql_result($arrayCollection, 0, "password");
 }
 }

/*! Validate if user exists and if exists, load the user data from database. */
 public function validateUser($user,$password) {
 $query = "SELECT id FROM user WHERE (login='$user' OR email='$user') AND password='". md5($password)."'";
 $arrayCollection = mysql_query($query, $this->connection);
 $total = ($arrayCollection) ? mysql_num_rows($arrayCollection): 0;
 if ($total == 1) {
 $id = mysql_result($arrayCollection, 0, "id");
 $this->getUser($id);
 return true;
 }
 else
 return false;
 }

/*! This method verify if is a new or an existent user and, execute the Insert or Update command. */
 public function save() {
 if (!isset($this->id)) {
 $query = "INSERT INTO user (name, email, login, password) VALUES ('$this->name', '$this->email', '$this->login', '".md5($this->password)."')";
 }
 else {
 $query = "UPDATE user SET name='$this->name', email='$this->email', login='$this->login' WHERE id=$this->id";
 }
 return mysql_query($query, $this->connection);
 }

/*! Excludes user from databases. */
 public function delete() {
 if (isset($this->id)) {
 $query = "DELETE FROM user WHERE id=$this->id";
 return mysql_query($query, $this->connection);
 }
 else { return false;}
 }

/*! Update user password in database. */
 function updatePassword($newPassword) {
 $query = "UPDATE user SET password='".md5($newPassword)."' WHERE id=$this->id";

return mysql_query($query, $this->connection);
 }

/*! Gets a list of users from database. */
 function getUserList() {
 $query = "SELECT id, name, email, login, password FROM user ORDER BY Name";
 return mysql_query($query, $this->connection);
 }

/*! The class constructor, loading or not a user from database. */
 function User($connection, $id) {
 $this->connection = $connection;
 if (isset($id) && is_numeric($id)) {
 $this->getUser($id);
 }
 }
 }
 

Arquivo/File: user.class.php.

Bom, agora que também já temos a classe, vamos utilizá-la! Para isso criamos 2 arquivos, um que manipula os dados recebidos, e outro a interface com o usuário. No segundo, os dados já cadastrados serão impressos, além de permitir que sejam adicionados mais dados. O primeiro server para carregar o objeto caso o mesmo já exista, ou para criar um novo, e claro salvar tanto a inserção quanto a alteração no banco de dados.
Good, now we have our class too, now in order to use it we will create 2 files, the first manipulates the received data, and the other the user can made a news registrations and see if the data was contained in database.

Código/Code:

 $id = null;
 if (isset($_GET["id"])) {
 $id=$_GET["id"];
 }
 include_once('class/connection.class.php');
 include_once('class/user.class.php');

$objConnection = new Connection();
 $varConnection = $objConnection->connect('localhost', 'root', 'vertrigo', 'teatching');

$objUser = new User($varConnection, $id);

$objUser->setName($_POST["textName"]);
 $objUser->setEmail($_POST["textEmail"]);
 $objUser->setLogin($_POST["textLogin"]);
 if (isset($_POST["textPassword"])) {
 $objUser->setPassword($_POST["textPassword"]);
 }
 $objUser->save();

header("location: user.php");
<pre>

Arquivo/File: manipulation.php

Código/Code:

 <?php
 include_once('class/connection.class.php');
 include_once('class/user.class.php');

$id = null;
 if (isset($_GET["id"])) {
 $id = $_GET["id"];
 }

$objConnection = new Connection();
 $varConnection = $objConnection->connect('localhost', 'root', 'vertrigo', 'teatching');

if ($id) {
 $objUser = new User($varConnection, $id);
 }
 else {
 $objUser = new User($varConnection, null);
 }
 ?>
 <html>
 <head>
 <title>Usu&aacute;rios/Users</title>
 </head>
 <body>
 <form action="manipulation.php<?php if ($id) { echo "?id=$id";} ?>" method="post">
 <label style="display:block;width:250px;">Nome/Name:</label><input type="text" id="textName" name="textName" size="30" maxlength="30" value="<?php echo $objUser->getName(); ?>"></input><br />
 <label style="display:block;width:250px;">Email:</label><input type="text" id="textEmail" name="textEmail" size="30" maxlength="100" value="<?php echo $objUser->getEmail(); ?>"></input><br />
 <label style="display:block;width:250px;">Login</label><input type="text" id="textLogin" name="textLogin" size="30" maxlength="20" value="<?php echo $objUser->getLogin(); ?>"></input><br />
 <?php if (!$id) { ?>
 <label style="display:block;width:250px;">Senha/Password:</label><input type="password" id="textPassword" name="textPassword" size="30" maxlength="20"></input><br />
 <?php } ?>
 <input type="submit" value="Salvar/Save" />
 </form>

<h3>Lista de Usu&aacute;rios/Users List</h3>
 <?php

$arrayCollection = $objUser->getUserList();
 $total = ($arrayCollection) ? mysql_num_rows($arrayCollection): 0;
 if ($total ==0) {
 echo "Sem usu&aacute;rios / Whitout users.";
 } else {
 for ($i=0; $i<$total; $i++) {
 echo "Nome/Name: ".mysql_result($arrayCollection, $i, "name")." <a href='user.php?id=".mysql_result($arrayCollection, $i, "id")."'>Selecionar/Select</a><br />";
 }
 }
 ?>

</body>
 </html>

Arquivo/File: user.php

[/sourcecode]

Classe PHP para conexão com o MySql / PHP Class for connect with MySql

Bom, senhoras e senhores!
Well, ladies and gentleman

Neste post vou ensinar a fazer uma classe simples, para conexão com o MySql.
In this post I will teach how to make a simple class, for MySql connection.

Código/Code:


<?php
 /*! This class creates a connection with MySql server.
 @name connection.php
 @author Danilo Lutz
 @date 07/07/2009
 */
 class Connection
 {
 /*! This method makes a connection with the server and opens a database for data manipulation.
 @param string $serverAddress Address of MySql Server.
 @param string $databaseUser User with permission to use the database.
 @param string $databasePassword User password.
 @param string $databaseName Database name to connect to.  */
 function connect($serverAddress, $databaseUser, $databasePassword, $databaseName){
 /*! Connect with the MySql Server. */
 $connection = mysql_connect($serverAddress, $databaseUser,$databasePassword) or die("Error: Can't connect to MySql Server.");

/*! Select the database in a MySql Server. */
 mysql_select_db($databaseName, $connection) or die("Error: Database <strong>$databaseName</strong> not found.");

/*! Returns the connection for manipulation. */
 return $connection;
 }
 /*! This method disconnects from the server.
 @param string $connection Connection created for $this->Connect().&nbsp; */
 function disconnect($connection) {
 /*! Really closes the connection with MySql. */
 mysql_close($connection);
 $connection = NULL;
 }

}
 ?>

File: connection.class.php.

Eu já os ensinei como usar os métodos de uma classe, no tópico anterior a esse, estudem! 😀
I already taught you how to use the methods of a class, in the previous topic, Study.

Espero ter ajudado.
hope it helps.

Criando classes simples em PHP

É bem simples construir uma classe em PHP. Faremos uma classe com os métodos getters e setters para pegar  e definir os valores das propriedades do objeto (lembrem-se, caso não saibam os conceitos de POO, entrem na seção POO), segue abaixo a classe  já com um exemplo de método privado.

class SimpleClass {
private $name;
private $lastname;

public function getName() { return $this->name; }
public function getLastName() { return $this->lastname; }
public function getCompleteName() {
return $this->makeCompleteName();
}

public function setName($v) { $this->name = $v; }
public function setLastName($v) { $this->lastname  = $v; }

private function makeCompleteName() {
return  $this->name." ".$this->lastname;
}

public function  SimpleClass($name, $lastname) {
$this->name = $name;
$this->lastname = $lastname;
}
}

O método construtor possui 2 (dois) parâmetros que devem ser informados ao instância o novo objeto

$objSimpleClass = new SimpleClass($param1, $param2);

Logo, para utilizar os métodos definidos na classe:

echo "Nome: ".$objSimpleClass->getName();
echo "<br />Sobrenome: ".$objSimpleClass->getLastName();
echo "<br />Nome Completo: ".$objSimpleClass->getCompleteName();

Para denfí-los a a partir de um objeto já instânciado:

$objSimpleClass->setName('Nome');
$objSimpleClass->setLastName('Sobrenome');

echo "Nome: ".$objSimpleClass->getName();
echo "<br />Sobrenome: ".$objSimpleClass->getLastName();
echo "<br />Nome Completo: ".$objSimpleClass->getCompleteName();

Esta classe é um exemplo bem simples. Por hoje fico por aqui, espero que tenham apreciado este post.

Introdução: PHP

O que é PHP?

O PHP é uma linguagem de programação dinâmica para produção de websites. Diferentemente das outras linguagens de produção de sites, o PHP é processado no servidor, retornando para o cliente (pessoa que acessa o site) apenas Html. Desta forma o código fonte não é exposto, o que é muito útil quando interagimos com banco de dados ou outros componentes que possuam senhas ou informações que precisem ser especificadas no código. (fonte: Julio Battist)

Claro, serão necessários conhecimentos de lógica e das funções e rotinas do PHP para acompanhar essa seção do blog. Para estudar esse tema sugiro: www.php.net.

Ambiente de Trabalho

Nosso ambiente de teste será composto dos seguintes itens:

  • Servidor Web (Apache)
  • Interpretador PHP
  • Banco de dados MySQL

Existem programas que já vem com esses pacotes pré definidos, basta apenas instalar. Por exemplo: Vetrigo.