Boa noite a todos.
Hoje, estou aqui para mostrar como criar um pequeno código em PHP, usando Mysql, para acessar uma base de dados.
Já vi muita gente a usar sistemas baseados em SQL sem fazer escape, etc.
Portanto, estou aqui para *ensinar* como inserir, selecionar e remover dados, de uma forma segura.
[Modificar й com o SELECT, mas com o "SET", sendo como jб sгo 2:30 da manhг.. nгo vou falar sobre ela.
Portanto, bem... vamos lá!
Aquilo que vamos precisar é de:
[list="box-sizing: border-box; margin-bottom: 10px;"][*]Um "servidor web" com php, e o mysql.
[*]Um "IDE" de jeito para criar um código PHP[Neste caso, vou usar o visual studio ultimate 2013]
[*]Inteligencia, e nada de burrice.
[*]É uma música ambiente para acalmar o stress, e trabalhar-mos melhor.
[/list]
Etapa 1:
Vamos criar um arquivo / projeto em php.
Etapa 2:
Vamos preparar a base de dados[e um usuário, no meu caso]...
Etapa 3:
Vamos criar uma tabela pelo PHPMyAdmin...
Agora, o nosso progresso foi:
[list="box-sizing: border-box; margin-bottom: 10px;"][*]Criar um projeto / arquivo de php
[*]Criar uma base de dados
[*]Adicionar uma tabela à base de dados*.
[/list]
*Onde nid tкm auto incrementaзгo, e nгo necessita de um valor introduzido por nуs[null]
Titulo, que й uma string, com tamanho mбximo de 128 bytes.
E o Texto, como nгo sabemos que conteъdo eo tamanho dele que vamos lб colocar, vamos "declara-lo" como "Texto"[o] Etapa
4:
Agora, ire-mos criar uma conexo inicial а base de dados, verificando, assim , se ela está a trabalhar ou não.
Código usado:
PHP como:
Bem, por agora, está tudo a correr bem!
Etapa 5:
Agora, vamos adicionar dados à base de dados, com a utilização dos "forms" do html.
Primeiro, fazemos a página HTML[5].
Como HTML:
Agora, criamos o código PHP dentro do código HTML.
PHP como:
Neste momento, já estamos a introduzir dados "limpos" na base de dados.
Mesmo que o usuário tente fazer SQL Injection, ele irá falhar, porque estamos totalmente protegidos.
Resultado:
Etapa 6:
Fazer um "Excluir", com dados apresentados pelo usuário, totalmente protegidos.
Para isso, vamos criar mais "dados" no banco de dados
.
PHP como:
Resultado:
Etapa 7 [A etapa final]
Executar um "select", o qual, irá mostrar o conteúdo da notícia selecionada.
Para isso, precisamos de um cdigo parecido a este:
PHP como:
Resultado:
Hoje, estou aqui para mostrar como criar um pequeno código em PHP, usando Mysql, para acessar uma base de dados.
Já vi muita gente a usar sistemas baseados em SQL sem fazer escape, etc.
Portanto, estou aqui para *ensinar* como inserir, selecionar e remover dados, de uma forma segura.
[Modificar й com o SELECT, mas com o "SET", sendo como jб sгo 2:30 da manhг.. nгo vou falar sobre ela.
Portanto, bem... vamos lá!
Aquilo que vamos precisar é de:
[list="box-sizing: border-box; margin-bottom: 10px;"][*]Um "servidor web" com php, e o mysql.
[*]Um "IDE" de jeito para criar um código PHP[Neste caso, vou usar o visual studio ultimate 2013]
[*]Inteligencia, e nada de burrice.
[*]É uma música ambiente para acalmar o stress, e trabalhar-mos melhor.
[/list]
Etapa 1:
Vamos criar um arquivo / projeto em php.
Etapa 2:
Vamos preparar a base de dados[e um usuário, no meu caso]...
Etapa 3:
Vamos criar uma tabela pelo PHPMyAdmin...
Agora, o nosso progresso foi:
[list="box-sizing: border-box; margin-bottom: 10px;"][*]Criar um projeto / arquivo de php
[*]Criar uma base de dados
[*]Adicionar uma tabela à base de dados*.
[/list]
*Onde nid tкm auto incrementaзгo, e nгo necessita de um valor introduzido por nуs[null]
Titulo, que й uma string, com tamanho mбximo de 128 bytes.
E o Texto, como nгo sabemos que conteъdo eo tamanho dele que vamos lб colocar, vamos "declara-lo" como "Texto"[o] Etapa
4:
Agora, ire-mos criar uma conexo inicial а base de dados, verificando, assim , se ela está a trabalhar ou não.
Código usado:
PHP como:
- Código:
<?php
$mysql = new mysqli("********","samptest", "lol123", "samptest"); // iremos ligar а base de dados.
if($mysql->connect_error == "") { // se nao houve nenhum erro a ligar
echo "Conectado a base de dados!"; // informamos ao utilizador que foi efetuada uma ligacao, com sucesso, а base de dados
$mysql->close(); // fechamos a ligaзгo
}
else
echo "Nao conectado a base de dados.<br />Error: ".$mysql->connect_error; // informamos ao utilizador que nгo foi possivel ligar а base de dados
?>
Bem, por agora, está tudo a correr bem!
Etapa 5:
Agora, vamos adicionar dados à base de dados, com a utilização dos "forms" do html.
Primeiro, fazemos a página HTML[5].
Como HTML:
- Código:
<html>
<head>
<title> Tutorial SA-MP </title>
</head>
<body>
<form action= "" method= "post" >
Introduza o titulo: <input type= "text" name= " Titulo" maxlength= "128" />
<p> </p>
Insira o texto: <textarea name= "texto" > </textarea> <br />
<input type= "submit" name= "enviar"
Agora, criamos o código PHP dentro do código HTML.
PHP como:
- Código:
<?php
$mysql = new mysqli("******", "samptest", "lol123", "samptest");
if($mysql->connect_error != "") { // verificamos se ocorreu algum erro
die("Nao foi possivel conectar-se a base de dados."); // para-mos a execucao o codigo com o "die", a informar que nao foi possivel conectar-se a base de dados.
}
?>
<html>
<head>
<title>SA-MP Tutorial</title>
</head>
<body>
<?php
if(isset($_POST['enviar'])) { // se o utilizador carregou no botao enviar, iremos introduzir os dados, se validados.
if(empty($_POST['Titulo'])) {
echo 'Nao inseriu o titulo!<br />
<a href="index.php">Tentar novamente</a>';
} elseif(empty($_POST['texto'])) {
echo 'Nao inseriu o texto!<br />
<a href="index.php">Tentar novamente</a>';
} else {
$titulo = htmlentities($mysql->escape_string($_POST['Titulo'])); // ire-mos limpar o conteudo de entrada no $_POST titulo
$texto = htmlentities($mysql->escape_string($_POST['texto'])); // ire-mos limpar o conteudo de entrada no $_POST texto.
$mysql->query("INSERT INTO `teste` (`Titulo`, `Texto`) VALUES ('{$titulo}', '{$texto}')");
if($mysql->error == "")
echo "Os dados foram introduzidos com sucesso na base de dados!<br />
<a href=\"index.php\">Voltar atras</a>";
else {
echo "Nao foi possivel colocar os dados na base de dados.<br />
Erro: ".$mysql->error.".";
}
}
} else {
?>
<form action="" method="post">
Introduza o titulo: <input type="text" name="Titulo" maxlength="128" />
<p> </p>
Introduza o texto: <textarea name="texto"></textarea><br />
<input type="submit" name="enviar" value="Enviar" />
</form>
<?php
}
?>
</body>
</html>
<?php
$mysql->close(); // fechamos a ligacao com a base de dados
?>
Neste momento, já estamos a introduzir dados "limpos" na base de dados.
Mesmo que o usuário tente fazer SQL Injection, ele irá falhar, porque estamos totalmente protegidos.
Resultado:
Etapa 6:
Fazer um "Excluir", com dados apresentados pelo usuário, totalmente protegidos.
Para isso, vamos criar mais "dados" no banco de dados
.
PHP como:
- Código:
<?php
$mysql = new mysqli("******", "samptest", "lol123", "samptest");
if($mysql->connect_error != "") { // verificamos se ocorreu algum erro
die("Nao foi possivel conectar-se a base de dados."); // para-mos a execucao o codigo com o "die", a informar que nao foi possivel conectar-se a base de dados.
}
?>
<html>
<head>
<title>SA-MP Tutorial</title>
</head>
<body>
<?php
if(isset($_POST['remover'])) { // se o utilizador escolheu uma opcao para remover...
if(isset($_POST['id'])) {
$id = str_replace('Noticia numero ', '', $_POST['id']); // iremos limpar os dados do input.
$id = $mysql->escape_string($id); // iremos limpar os dados para a input.
//// vamos apagar a noticia escolhida.
@$mysql->query("DELETE FROM `teste` WHERE `nid` = '{$id}'");
if($mysql->error == "") {
echo 'A noticia foi removida com sucesso!<br />
<a href="index.php">Voltar atras</a>';
} else {
echo 'Ocorreu um erro ao remover a noticia.<br />
Erro: '.$mysql->error.'<br />
<a href="index.php">Voltar atras</a>';
}
} else {
echo 'Nenhuma noticia selecionada!<br />
<a href="index.php">Voltar atras</a>';
}
} else { // senao, apresentamos os dados na base de dados.
$dados = array(); // onde os nossos dados com os numeros das "noticias" irao ficar guardados.
$data = $mysql->query("SELECT * FROM `teste` ORDER BY `nid` ASC", MYSQLI_USE_RESULT); // iremos pedir a base de dados todas as "rows" da tabela teste, organizados de ordem crescente, pelo conteudo da coluna de nid
while($buffer = $data->fetch_Array()) { // enquanto houver dados para "apanhar", iremos buscalos.
$dados[count($dados)] = $buffer['nid']; // iremos guardar sucessivamente dados dentro da variavel $dados, com o numero da noticia.
}
//// agora, vamos apresentar os dados.
?>
<form action="" method="post">
Escolha uma noticia para remover.<br />
<select name="id">
<?php
foreach($dados as $op) {
echo '<option>Noticia numero '.$op.'</option>';
}
?>
</select>
<input type="submit" name="remover" value="Remover" />
</form>
<?php
}
?>
</body>
</html>
Resultado:
Etapa 7 [A etapa final]
Executar um "select", o qual, irá mostrar o conteúdo da notícia selecionada.
Para isso, precisamos de um cdigo parecido a este:
PHP como:
- Código:
<?php
$mysql = new mysqli("*******", "samptest", "lol123", "samptest");
if($mysql->connect_error != "") { // verificamos se ocorreu algum erro
die("Nao foi possivel conectar-se a base de dados."); // para-mos a execucao o codigo com o "die", a informar que nao foi possivel conectar-se a base de dados.
}
?>
<html>
<head>
<title>SA-MP Tutorial</title>
</head>
<body>
<?php
if(isset($_POST['mostrar'])) { // se o utilizador escolheu uma opcao para mostrar...
if(isset($_POST['id'])) {
$id = str_replace('Noticia numero ', '', $_POST['id']); // iremos limpar os dados do input.
$id = $mysql->escape_string($id); // iremos limpar os dados para a input.
//// vamos selecionar a noticia escolhida.
$data = @$mysql->query("SELECT * FROM `teste` WHERE `nid` = '{$id}'", MYSQLI_USE_RESULT);
if($mysql->error == "") {
$dados = $data->fetch_Array(); // iremos guardar os dados da noticia dentro de um vetor
echo 'Numero: '.$dados['nid']."<br />"; // iremos mostrar
echo 'Titulo: '.$dados['Titulo']."<br />"; // o conteudo
echo 'Texto: '.$dados['Texto']."<br />"; // do vetor
echo '<a href="index.php">Voltar atras.</a>';
} else {
echo 'Ocorreu um erro ao selecionar a noticia solicitada.<br />
Erro: '.$mysql->error.'<br />
<a href="index.php">Voltar atras</a>';
}
} else {
echo 'Nenhuma noticia selecionada!<br />
<a href="index.php">Voltar atras</a>';
}
} else { // senao, apresentamos os dados na base de dados.
$dados = array(); // onde os nossos dados com os numeros das "noticias" irao ficar guardados.
$data = $mysql->query("SELECT * FROM `teste` ORDER BY `nid` ASC", MYSQLI_USE_RESULT); // iremos pedir a base de dados todas as "rows" da tabela teste, organizados de ordem crescente, pelo conteudo da coluna de nid
while($buffer = $data->fetch_Array()) { // enquanto houver dados para "apanhar", iremos buscalos.
$dados[count($dados)] = $buffer['nid']; // iremos guardar sucessivamente dados dentro da variavel $dados, com o numero da noticia.
}
//// agora, vamos apresentar os dados.
?>
<form action="" method="post">
Escolha uma noticia para mostra.<br />
<select name="id">
<?php
foreach($dados as $op) {
echo '<option>Noticia numero '.$op.'</option>';
}
?>
</select>
<input type="submit" name="mostrar" value="Mostrar" />
</form>
<?php
}
?>
</body>
</html>
Resultado:
Bem, espero que tenha gostado & esperado deste tutorial.
Fico à espera de críticas construtivas.
Creditos: GWMPT