[Cascavel-pm] contra barra - Resolvido

Luis Motta Campos luismottacampos em yahoo.co.uk
Quinta Outubro 18 07:14:31 PDT 2007


On Thu, Oct 18, 2007 at 11:26:15AM -0300, Ricardo Stock wrote:
> Obrigado a ajuda que tive, ao igor e ao "Chomp"
> 
> ficou assim o código
> 
> $caminho=sprintf('local\usuario\%s', $numero);
> my $sth = $dbh->prepare( q{UPDATE usuarios 
>     SET caminho = ? WHERE numero = ?} );
> $sth->execute($caminho, $numero);
> 
> Explicando melhor funciona assim
> 
> 1 - Recebe os dados via form html (os erros de preenchimento são tratados 
> via JS)

Eu nao devia, mas vou apontar FALHA GRAVE DE SEGURANCA no teu sistema,
por voce confiar no JS para verificacao de erros de preenchimento. Tome
cuidado, e trate de validar seus dados SERVER SIDE - JS pode ser
reescrito, invalidado, ignorado e torcido de uma infinidade de maneiras
diferentes.

E, jah que voce esta escrevendo CGI, pelo menos diga que voce estah
usando o CGI::Application, ou , melhor ainda, o Catalyst... ;)

> 2 - Chama função para cadastrar.
> 3 - uma vez cadastrado, como o campo numero é auto incrementado, faça uma 
> busca pelo numero e obtenho o mesmo para fazer o caminho

Bom, jah que voce estah usando MySQL (espero que seja pelo menos o 5.1 -
mas voce deveria mesmo era usar Postgres, que eh uma base de dados
seria), use $dbi->last_insert_id() para obter o numero do insert que
voce terminou de fazer. Assim, voce economiza um SELECT.

> 4 - crio a pasta no local indicado pelo numero do usuário
> 5 - Atualizo o banco com o numero no caminho exe local/ususario/1234

Eu ateh tenho medo de perguntar, mas o senso do dever fala mais alto:
Voce pode por favor me explicar para que precisa ter uma interface web
que cadastra usuarios e associa um diretorio server-side para cada um
deles? Isso estah me cheirando a idiosincrasia empresaral aguda, e eu
acho que existe pelo menos uns 5 jeitos mais limpos, elegantes e
economicos de resolver o teu problema... quer falar mais sobre isso
antes de continuar?

> 6 - dou o retorno em html do registro.

"Retorno em html" ? Bom, outra vez, eu vou apontar voce para o jeito
certo de fazer, meu caro... use o HTML::Template, ou o TT (Template
Toolkit) para gerar seu HTML a partir de templates. Desta forma, voce
mantem seu codigo longe do tipo de caca que estraga programas com
interface web: o HTML.

Putamplexos!
-- 
Luis Motta Campos
Perl Programmer, Hobbyist Cook and Photographer


Mais detalhes sobre a lista de discussão Cascavel-pm