Hello everyone, I'm trying to filter a value from an imput using the strpos () function. This value must be a URL and must contain a small string defined by a list. But the filter is not working and I can not find the error:
<?php
/* VERIFICO SE Há UM POST */
if(count($_POST) > 0) {
$erro = array();
$dados = array();
// filtro url ads
$filter_ads = array();
$filter_ads[0] = "galid=";
$filter_ads[1] = "gslid=";
$filter_ads[2] = "ghlid=";
$filter_ads[3] = "gplid=";
$filter_ads[4] = "gulid=";
$filter_ads[5] = "gllid=";
$filter_ads[6] = "gklid=";
$filter_ads[7] = "grlid=";
$filter_ads[8] = "gwlid=";
$filter_ads[9] = "gelid=";
/* PERCORRO TODOS OS CAMPOS */
foreach($_POST as $nome => $valor) {
/* VERIFICO SE NENHUM CAMPO EST?? VAZIO */
if(isset($valor) || !empty($valor)) {
// procura por campo URL e verifica se foi digitado corretamente
if($nome == 'link1' && !preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$valor)) {
//Filtro o valor digitado
foreach ($filter_ads as $filter) {
if (strpos($valor, $filter)){
echo "Aceito";
} else {
$erro[$nome] = 'A <strong>URL</strong> inserida é inválida.';
}
}
}
// Insere os valores removendo todas as tags HTML e espaços em branco inseridas no começo e fim do valor
$dados[$nome] = trim(strip_tags($valor));
} else {
$erro[$nome] = "<span style='color:red;'>O campo <strong>".ucwords($nome)."</strong> n?o pode ficar vazio</span>";
}
}
}
// verifico se há algum erro
if(count($erro) == 0) {
$hostname = "localhost";
$usuario = "user_up";
$senha = "123456";
$DB = "user_teste";
$conn = new mysqli($hostname, $usuario, $senha);
if ($conn->connect_error) {
die('Falha ao estabelecer uma conex??o com o banco de dados: '.$conn->connect_error);
} else {
// VERIFICO SE EXISTE o BANCO DE DADOS, CASO n?o, ? criado automaticamente.
if(!$conn->select_db($DB)) {
$conn->query('CREATE DATABASE IF NOT EXISTS ' .$DB. ';');
$conn->select_db($DB);
}
// faz o mesmo com a tabela
$tabela = $conn->query('SHOW TABLES LIKE \'introads\'');
if($tabela->num_rows == 0) {
$conn->query(
"CREATE table introads(
id INT(11) AUTO_INCREMENT NOT NULL,
link1 VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);"
);
}
$campos = implode(", ", array_keys($dados));
$valores = implode("','", $dados);
$valores = "'".$valores."'";
$conn->query("INSERT INTO introads(".$campos.") VALUES (".$valores.")");
// SE TUDO ESTIVER OK, REDIRECIONO PARA UMA P??GINA DE SUCESSO
header('location:index.php');
}
}
}
?>
<form id="introAds" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<ul>
<li id='block1'>
<input type="text" name="link1" lang="pt" maxlength="400" value="<?php echo isset($dados['link1']) ? $dados['link1'] : ''; ?>" />
<?php if(isset($erro['link1'])) { ?>
<label class="erro" for="nome"><?php echo $erro['link1']; ?></label>
<?php } ?>
</li>
<li>
<input type="submit" id="enviar" value="Gravar" />
</li>
</ul>
</form>