elcsat Posted October 18, 2008 at 09:12 AM Report #218789 Posted October 18, 2008 at 09:12 AM bom dia, gostaria que me ajudassem num site que ando a fazer, sempre que é feito um registo no site em que esse tenha que ir para a base de dados, nao queria que o cliente sempre que fizesse refresh da pagina escrevesse uma na base de dados, ja pensei usar um cookie para isso ou uma sessao, mas tava a pensar se havia alguma funçao que verificasse isso automaticamente, é isso que procuro uma funçao. cumprimentos nuno batista
pmg Posted October 18, 2008 at 11:00 AM Report #218807 Posted October 18, 2008 at 11:00 AM Não me lembro de nenhuma função que faça isso; tens mesmo de escrever código para validar ou controlar as acções do utilizador. Tens várias hipóteses: a) verificar se o registo já existe na base de dados antes de o inserir. Se já existe é porque o cliente fez um refresh da página. 😕 Arranjas uma chave única para cada inserção. Se a instrução INSERT do site der o erro de "chave duplicada", quer dizer que foi um refresh. Ignoras o erro e continuas normalmente. c) Fazes o registo sem escrever nada na página e depois redireccionas o cliente para outra página. Assim, se ele fizer o refresh, faz o refresh à outra página, e não à página que insere dados. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
elcsat Posted October 18, 2008 at 07:32 PM Author Report #218891 Posted October 18, 2008 at 07:32 PM obrigada, mas nao se trata de registo se fosse era facil unique, primary key da base de dados registo unico na base de dados de username de email, mas nao se trata de registo, trata-se de mensagens, logo nao posso ir por verificaçoes na base de dados, mas posso usar um cookie por exemplo quando ele escreve a primeira vez na base de dados atribuir o titulo da mensagem ao cookie, se fizer um refresh e o cookie existir conclusao ignora simplesmente a inserçao na base de dados era isto que eu tinha em mente, quem diz isto diz sessoes mas para o meu caso e melhor cookies:P obrigada pela resposta bom fim de semana
pmg Posted October 18, 2008 at 08:18 PM Report #218903 Posted October 18, 2008 at 08:18 PM E quando é que apagas o cookie? O utilizador não pode escrever duas mensagens seguidas, na mesma sessão, com o mesmo cookie? Não sei como é que usas as mensagens no teu site, mas se for uma coisa tipo e-mail o utilizador não pode responder a uma mensagem a dada altura (título "Re: mensagem") e passados dois minutos lembrar-se que queria dizer mais qualquer coisa nessa mensagem e mandar *outra* mensagem com o mesmo título? A respeito da chave única: o que eu escrevi foi abuso de linguagem. É claro que a chave duma tabela é única. O que eu queria dizer é que podes limitar uma coluna qualquer (independentemente de fazer ou não parte da chave da tabela) para ter valores únicos. CREATE UNIQUE INDEX idx_titulo ON mensagem (titulo) A chave primária de uma tabela não é mais que um UNIQUE INDEX especializado. Das soluções que apresentei na minha mensagem anterior, a que eu gosto mais é a última /* trata dos dados recebidos */ $sql = "INSERT INTO mensagem VALUES ($id, $titulo, $recipiente)"; mysql_query($sql); header('Location: inbox.php'); /* sem mandar nada para o browser antes! */ exit('Redireccionado para a <a href="inbox.php">caixa de entrada</a>.'); What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
elcsat Posted October 19, 2008 at 12:18 PM Author Report #219027 Posted October 19, 2008 at 12:18 PM Obrigada, ja resolvi o problema 🙂 mas fico grato pela resposta. cumprimentos
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now