Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jones Guidini

Pq a função não esta bloqueando?

Recommended Posts

Ola amigos,

 

Eu tenho um script para cadastrar fotos.

Ele funciona perfeitamente.

 

Estou tentando limitar o numero de cadastro por usuario.

Ou seja, o usuario só podera cadastrar no máximo 12 fotos ao total!

 

 

Eu tentei usando a função mysql_num_rows , contando o numero de registros e usando o if para limitar.

 

a lógica ficou + ou - assim:

 

<?php

 

include ("conecta.php");

 

$sql = mysql_query("SELECT * FROM album ");

$registros = mysql_num_rows($sql);

 

 

if ($registros <= 12 )

{

 

// aqui fica o script q funciona normalmente! //

 

}

 

else

{

echo "Voce só pode cadastrar 12 fotos!!!

}

 

?>

 

 

Pelo lógica isso funcionaria normalmente!

 

Acontece q ele retorna (printa) a mensagem do else = "Voce só pode cadastrar 12 fotos" ,mas não inpede de cadastrar mais q 12 fotos!

 

Tentei de varias maneiras e não consegui limitar.

 

Creio q seja a forma q apliquei essa função.

Para isto postei aqui em baixo o script inteiro. ele é um poquinho grande, mas dei destaque as partes principais. o resto creio q não é tão importante para limitação.

 

 

Olhe e me dizem se esta correto a forma q apliquei, ou pq não esta impedindo de cadastrar.

 

 

Desde já agradeço.

 

Abraço!

 

Baraço e vlw. ^_^

 

ele ai:

<body>

<?php

include ("conecta.php");

 

$id = $_GET['id'];

$sql = mysql_query("SELECT * FROM album where user_id = '$id'");

$registros = mysql_num_rows($sql);

?>

 

<FORM action="<?=$_SERVER["PHP_SELF"]?>" method="post" enctype="multipart/form-data">

<input name="novo_id" value="<?=$_GET['id']?>" type="hidden">

 

<div style="margin-top: 5px;">

<table width="100%" cellpadding="0" cellspacing="0" bgcolor="#F7F7F7">

<tr>

<td>

 

<div align="center">

 

<table width="95%" align="center" cellpadding="1" cellspacing="1" bgcolor="#F7F7F7" class="tbl_br">

<tr>

<td colspan="2" height="5px">  </td>

</tr>

 

<tr>

<td width="34%" height="20px" >

<div align="right">

<font face="verdana" size="2" color="#005FFB">

Procurar imagem: </font> </div> </td>

<td width="66%" height="20px">

<div align="left">

<input type="file" name="arquivo" id="arquivo" />

</div> </td>

</tr>

<tr>

<td height="20px">

<div align="right">

<font face="verdana" size="2" color="#005FFB">

Legendas: </font> </div> </td>

<td>

<div align="left">

<input type="text" name="legenda" id="legenda" size="35">

  

<input name="submit" type="submit" value="salvar" />

</div> </td>

</tr>

 

 

<tr>

<td colspan="2" height="5px">  </td>

</tr>

</table>

 

</div>

 

</td>

</tr>

</table>

 

</div>

</form>

 

</body>

</html>

 

<?php

 

include ("conecta.php");

 

$id = $_GET['id'];

$sql = mysql_query("SELECT * FROM album where user_id = '$id'");

$registros = mysql_num_rows($sql);

 

if ($registros <= 18)

{

 

 

if(isset($_POST['submit'])) // função q cadastra a noticia

{

 

//diretorio para onde ira as imagens

$dir = "img_album/";

//verifica se foi enviardo algo pelo method post

 

 

//verificando se o input arquivo foi passado e se naum esta vazio

if(isset($_FILES["arquivo"]) && !empty($_FILES["arquivo"]))

{

//atribuindo uma variavel a cada chave com o seu valor

//que saum: name, size, type, tmp_name, error

foreach($_FILES["arquivo"] as $campo => $valor)

{

$$campo = $valor;

}

//o arquivo é maior que o valor do input MAX_FILE_SIZE

if($error == 2)

{

echo "O Arquivo é maior do que o esperado!";

}

/*----Editado------

Usamos primeiramente a função preg_match, que neste caso está buscando

no tipo da imagem ($type vem do foreach logo acima) se não (!) contém o nome

(image). Se não contiver, quer dizer que o tipo de arquivo que

está sendo feito o "upload" não é realmente uma imagem.

Mostra a mensagem e dá um exit.

-----------------*/

if(! preg_match('@(image)@i', $type))

{

echo "Por favor, somente imagens !";

exit;

}

else

{

/*----Editado -----

Pegamos o tipo ($tipo) do arquivo

-------------------*/

list($largura, $altura, $tipo, $tag_img) = getimagesize($tmp_name);

/* A variável $tipo pegará da imagem um número conforme seu formato:

1 = GIF, 2 = JPG, 3 = PNG

Depois só comparar: */

if($tipo == 1) {

$img_tipo = 'gif';

} elseif ($tipo == 2) {

$img_tipo = 'jpg';

} elseif ($tipo == 3) {

$img_tipo = 'png';

} else {

echo "Formato inválido de imagem !";

exit;

}

 

/*----Editado-----

Gerando um nome aleatório para as imagens, para não correr o risco de sobrepor

date("Ymdhis")-> Ano+mes+dia+hora+minuto+segundo :)

---------*/

 

$nome = $dir.date("Ymdhis").".".$img_tipo;

//verifica se foi enviado o arquivo

if(move_uploaded_file($tmp_name, $nome))

{

 

#abaixo está o codigo para a miniatura

$imagem = $nome;

$extensao = explode(".","$imagem");

//gerando o novo nome pra imagem que no caso fica: nomedaimg_mini.ext

$nome_nova = $extensao[0]."_mini.".$extensao[1];

 

if($img_tipo == "jpg"){

$img = imagecreatefromjpeg($imagem);

}elseif($img_tipo == "gif") {

$img = imagecreatefromgif($imagem);

}else {

$img = imagecreatefrompng($imagem);

}

 

$larg = imagesx($img);

$altu = imagesy($img);

 

//largura da miniatura

$y = 100;

//altura proporcional a largura

$x = ($y * $larg)/$altu;

 

$imagem_nova = imagecreatetruecolor($x,$y);

imagecopyresampled($imagem_nova,$img,0,0,0,0,$x,$y,$larg,$altu);

 

if($img_tipo == "gif")

{

imagejpeg($imagem_nova, $nome_nova);

} elseif($img_tipo == "jpg") {

imagegif($imagem_nova, $nome_nova);

} else {

imagepng($imagem_nova, $nome_nova);

}

 

//liberando memoria

imagedestroy($imagem_nova);

imagedestroy($img);

 

echo "Arquivo foi enviado com sucesso!

<img src=\"img_data/".$imagem_nova."\">

Obrigado<br>\n";

 

$legenda = $_POST['legenda'];

$id = $_POST['novo_id'];

$a = "INSERT INTO album (user_id, legenda, img_p, img_g) VALUES ('$id', '$legenda', '$nome_nova', '$nome')";

$a = mysql_query($a);

 

//esta é a função q vai criar a pasta com o nome do usuario

}

else

{

echo "Não foi possivel fazer o envio do arquivo!<br>\n";

}

 

}

 

 

}

 

echo"<script>window.location=\"mural_fotos.php?id=$id\";</script>";

 

}

 

//

}

else

{

echo "Seu limite é de 12 fotos!";

}

//

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque você não usa um campo de id para cada foto inserida?Aí você faz uma condicional na sua query tipo: if id>12 echo Seu limite de fotos foi atingindo!Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na sua tabela do banco de dados você coloca os dados relativos às fotos e mais o nome de quem as enviou.Você envia para o banco de dados todas a s informações, dentre elas o nome do usuário. Antes de você rodar todo o script enviando uma nova foto, você faz uma busca pelo nome do usuário.$seleciona = mysql_query("SELECT fotos FROM album WHERE usuario='Jose'");$res = mysql_num_rows($seleciona);if($res > 12){echo "Somente 12 fotos por usuário";exit;}Veja se dá certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.