15.12.2013, 01:29
(
Последний раз редактировалось GWMPT; 15.12.2013 в 09:45.
)
Boa noite a todos.
Hoje, estou aqui para mostrar como criar um pequeno cуdigo em PHP, usando Mysql, para aceder uma base de dados.
Jб vi muita gente a usar sistemas baseados em SQL sem fazer escaping, 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:
Vamos criar um ficheiro / projeto em php.
Etapa 2:
Vamos preparar a base de dados[e um utilizador, no meu caso]...
Etapa 3:
Vamos criar uma tabela pelo PHPMyAdmin...
Atй agora, o nosso progresso foi:
Titulo, que й uma string, com tamanho mбximo de 128 bytes.
E o Texto, como nгo sabemos que conteъdo e o tamanho dele que vamos lб colocar, vamos "declara-lo" como "Text"[o]
Etapa 4:
Agora, ire-mos criar uma conexгo inicial а base de dados, verificando, assim, se ela estб a trabalhar ou nгo.
Cуdigo usado:
Bem, por agora, estб tudo a correr bem!
Etapa 5:
Agora, ire-mos adicionar dados а base de dados, com a utilizaзгo das "forms" do html.
Primeiro, fazemos a pбgina HTML[5].
Agora, cria-mos o cуdigo PHP dentro do cуdigo HTML.
Neste momento, jб estamos a introduzir dados "limpos" na base de dados.
Mesmo que o utilizador tente fazer SQL Injection, ele irб falhar, porque estamos totalmente protegidos.
Resultado:
Etapa 6:
Fazer um "Delete", com dados introduzidos pelo utilizador, totalmente protegidos.
Para isto, iremos criar mais "dados" no banco de dados.[Eu acho que para isto, nгo й preciso foto]
E iremos usar o seguinte cуdigo:
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 cуdigo parecido a este:
Resultado:
Hoje, estou aqui para mostrar como criar um pequeno cуdigo em PHP, usando Mysql, para aceder uma base de dados.
Jб vi muita gente a usar sistemas baseados em SQL sem fazer escaping, 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:
- Um "web server" com php, e o mysql.
- Um "IDE" de jeito para criar um cуdigo PHP[Neste caso, vou usar o visual studio ultimate 2013]
- Inteligкncia, e nada de burrice.
- E uma mъsica ambiente para acalmar o stress, e trabalhar-mos melhor.
Vamos criar um ficheiro / projeto em php.
Etapa 2:
Vamos preparar a base de dados[e um utilizador, no meu caso]...
Etapa 3:
Vamos criar uma tabela pelo PHPMyAdmin...
Atй agora, o nosso progresso foi:
- Criar um projeto / ficheiro de php
- Criar uma base de dados
- Adicionar uma tabela а base de dados*.
Titulo, que й uma string, com tamanho mбximo de 128 bytes.
E o Texto, como nгo sabemos que conteъdo e o tamanho dele que vamos lб colocar, vamos "declara-lo" como "Text"[o]
Etapa 4:
Agora, ire-mos criar uma conexгo inicial а base de dados, verificando, assim, se ela estб a trabalhar ou nгo.
Cуdigo usado:
PHP код:
<?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
?>
Etapa 5:
Agora, ire-mos adicionar dados а base de dados, com a utilizaзгo das "forms" do html.
Primeiro, fazemos a pбgina HTML[5].
Код HTML:
<html> <head> <title>SA-MP Tutorial</title> </head> <body> <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> </body> </html>
PHP код:
<?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
?>
Mesmo que o utilizador tente fazer SQL Injection, ele irб falhar, porque estamos totalmente protegidos.
Resultado:
Etapa 6:
Fazer um "Delete", com dados introduzidos pelo utilizador, totalmente protegidos.
Para isto, iremos criar mais "dados" no banco de dados.[Eu acho que para isto, nгo й preciso foto]
E iremos usar o seguinte cуdigo:
PHP код:
<?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>
Etapa 7[A etapa final]
Executar um "select", o qual, irб mostrar o conteъdo da notнcia selecionada.
Para isso, precisamos de um cуdigo parecido a este:
PHP код:
<?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>
Bem, espero que tenham gostado & percebido deste tutorial.
Fico а espera de crнticas construtivas.