Ir para conteúdo
Fórum Script Brasil

Churc

Veteranos
  • Total de itens

    1.198
  • Registro em

  • Última visita

Tudo que Churc postou

  1. Churc

    Segurança em Login

    Mais com a senha criptografada utilizando por exemplo o md5, independente de qual senha voce registre ela vai ser a senha criptografada seria um caso de você enviar a senha criptografada " Exemplo: d56s55sssafdafDFDss68 " no e-mail do seu usario para depois ele alterar, ai sim quando ele alterar vai passar a valer a senha que ele criar... Pois se ele cadastrar e tentar entrar com a senha que ele criou vai aparecer a pagina de usuario ou senha invalido pois a senha vai ser " d56s55sssafdafDFDss68 " Ah sim, é que no meu caso são sistemas "comerciais" então não tem essa de ir pro usuário por email por exemplo a senha... e sim o usuário é cadastrado por um Administrador por exemplo com uma senha X ai depois de logar com essa senha ele vai no Painel dele de usuário e altera a senha para Y. Realmente, em sistemas Web tipo um cadastro em um site e "for enviada" a senha pro usuário isso falha... Mas é por isso que sites como Twitter, Facebook, etc... você não recebe a senha por email e quando perde a senha o único meio é dar um RESET na senha... ou seja, eles não armazenam sua senha... por privacidade... alias armazenam sim mas criptografado... quis dizer que não armazenam como ela "é"... Agora sites que enviam sua senha por email realmente desta forma não é viável mesmo... mas por segurança, o certo é dar um RESET como os próprios sites "grandes" vamos que se dizer fazem... windows live, gmail tb... ps: mas é claro que sites grandes como estes que citei não usam essa simplicidade que fiz uhahuahu é do que o amigo fez ai pra mais forte em termo de segurança... só quis mostrar uma maneira simples e segura de login... excetos os sistemas que precisam enviar a senha pro usuário como mencionado... Sinceramente, da até medo sites que te mandam por email suas informações de cadastro, principalmente sites de compra... porque mostra que por exemplo informações do seu cartão de crédito ou até mesmo a senha que você usou pode ser sua senha do dia dia pro email etc... esteja vulnerável... abrs
  2. Churc

    Segurança em Login

    muito bom! sabe que eu uso criptografia... utilizo SHA1 ou MD5 mesmo... mas muito seguro mesmo é RIJNDAEL então se por exemplo você armazenar a senha de usuário e o login com SHA1, o SQL Injection já falha, ou seja você já estaria seguro disso... exemplo quando você for gravar o usuário e senha de um usuário que está sendo cadastrado só você fazer $login = "churc"; $login_sha1 = sha1($login); $senha = sha1($senha); na tabela... codigo = AUTO_INCREMENT INT(11) usuario = VARCHAR(80) //$login login = VARCHAR(40) //$login_sha1 senha = VARCHAR(40) //$senha e no seu caso você faria $login = sha1($_POST["login"]); $senha = sha1($_POST["senha"]); bom automaticamente morreram todas as tentativas de SQL Injection... os dados estão seguros e nem o criador do sistema tem acesso as senhas dos usuários (o que é o certo) pra logar você procura na tabela onde login = $login e senha = $senha e pra saber o nome do usuario basta puxar o campo usuario que é somente referência assim como outros campos podem ser criados na hora de cadastrar o usuário para tal referência (idade, etc)... mas o seu ta show;;; muito bem feito e bem elaborado... parabéns! só quis mostrar que é uma forma simples mas porém segura também... abrss
  3. function playInside(const szName: String): Boolean; var FindHandle, ResHandle: THandle; ResPtr: Pointer; begin Result := False; FindHandle := FindResource(HInstance, szName, 'WAVE'); Result := LongBool(FindHandle); if then begin ResHandle := LoadResource(HInstance, FindHandle); Result := LongBool(ResHandle); if (Result) then begin ResPtr := LockResource(ResHandle); if Assigned(ResPtr) then SndPlaySound(PChar(ResPtr), snd_ASync or snd_Memory); UnlockResource(ResHandle); end; FreeResource(FindHandle); end; end; if playInside('nome do recurso') then showmessage('aee') else showmessage(':('); testa ai não pude testar porque to sem delphi aqui... abrs
  4. Na minha opinião... BD Categoria - idcategoria - nome ... BD Empresa - idempresa - nome - descricao - endereco - telefone ... BD Anuncio - idempresa - idcategoria - anuncio ... onde, a tabela categoria é somente para cadastrar novas categorias de anuncio... a tabela empresa é apenas uma tabela com os dados da empresa e o idempresa identifica ela... já a tabela anúncio é a tabela onde você buscará os anúncios por categoria, ex: SELECT * FROM anuncios WHERE idcategoria = 'X' ou seja, o camarada vai colocar o anúncio em 2 categorias, logo você deve cadastrar na tabela anuncio os 2 anúncios somente mudando o id da categoria assim você pode remover o anúncio dele de uma categoria específica, exemplo, "ah o mês que vem quero continuar anunciando mas apenas na categoria X e não mais na X e Y" você também consegue saber quantos anúncios você tem no total, ou por categoria, ou por empresa... etc mas quanto mais você incrementar informações melhor, por exemplo, na tabela anúncios você pode adicionar um campo do tipo data e hora, pra saber em qual data ele foi adicionado, pode-se por também dataDe e dataAté pra expirar, pode colocar um ativo do tipo Char(1) como S pra ativo e N pra não ativo vai da sua imaginação rs essa é minha idéia talvez haja outras melhores... abrs
  5. você tem o conteúdo dos sobrenomes? ali o sistema é uma coisa, o conteúdo é outra... o sistema em si é bem simples... mas a origem ou fonte no caso os dizeres do sobrenome que é o problema, você tendo isso fica fácil... caso você não tenha esse conteúdo, não vai existir maneira ou tutorial na internet onde você vai encontrar isso, as vezes foi tudo cadastrado nas mãos pelos criadores através de estudos... agora o "sistema" em si é bem fácil... só informa sobre o conteúdo... abrs
  6. certo... é muda um poco o esquema de busca na array rs segue... <?php $hora_extensa = array("09:12:27","13:13:59","16:39:16"); $dia = "19/04/2012"; echo "<tr>"; echo "<td>$dia</td>"; //imprimindo o array nas posições certas for ($i = 0; $i < 24; $i++) { $hora = ($i <= 9) ? "0".$i.":" : $i.":"; $achou = preg_grep("/^".$hora.".*/", $hora_extensa); if (count($achou) > 0) { end($achou); $chave = key($achou); echo "<td>".$hora_extensa[$chave]."</td>"; } else echo "<td>---</td>"; } echo "</tr>"; ?> abrss
  7. pensei em um jeito mais fácil, crie um arquivo chamado download.php com esse conteudo... isso é um exemplo, você adapta pra forma que quiser <?php $tipo = $_GET["mime"]; $arquivo = $_GET["arquivo"]; $caminho = $_GET["caminho"]; $codigocliente = $_GET["codigocliente"]; //aqui você grava no BD a data e se quiser com o código de cliente... header("Content-type:".$tipo); header("Content-Disposition:attachment;filename=".$arquivo.""); readfile(rawurldecode($caminho)); ?> na página que vai chamar o download, você simplesmente chama esse download.php passando os parametros pra ele exemplo <a href="<? echo "download.php?tipo=COLOCA_O_MIME_TYPE_AQUI&arquivo=".$aux['arquivo']."&caminho=../upload_empresas/".$arquivo."&codigocliente=".$codigocliente; ?> ?>" target="_blank"><? echo $aux['arquivo']; ?></a> em MIME TYPE você deve colocar o tipo mime do arquivo, ele varia conforme a extensão exemplo pra .exe = application/exe (http://filext.com/file-extension/EXE) pra .zip = application/x-zip (http://filext.com/file-extension/ZIP) pra .txt = text/plain (http://filext.com/file-extension/TXT) enfim, isso é pro navegador saber como ele deve interpretar o conteúdo pra salvar o arquivo... você pode saber o tipo mime pesquisando no google ou trocando no final do url (http://filext.com/file-extension/EXTENSAO_AQUI) passando a extensao desejada e em Mime Type escolha um que aparece de preferência os primeiros e já era o certo é na tabela do banco de dados onde você armazena dados do arquivo para download, você criar um campo armazenando o mime e então só passar já puxando do banco de dados... espero ter ajudado qualquer coisa posta ae abrs
  8. sim senhor espera um momento, mas vou passar um exemplo com JQUERY/AJAX beleza, porque senão tem que fazer gambi com div ou ter que mudar pra outra página
  9. fala amigo, me mostra como você pega o URL por $_SERVER e se possivel cola aqui um "echo" de exatamente como vem o URL pra você com os parametros... abrs
  10. fala amigo... então, uma mistureba de coisas mas funcionou ai você só adapta pra forma que achar melhor, da pra filtrar só arquivos, porque da forma que está lista diretórios tb da uma testada <? ini_set("show_errors", "on"); $temp = array(); if ($handle = opendir('.')) { while (false !== ($buff = readdir($handle))) { if ($buff != "." && $buff != ".." && !empty($buff) && $buff != NULL) $temp[filemtime($buff)] = $buff; } closedir($handle); } ksort($temp); $arquivos = array(); foreach ($temp as $buff) $arquivos[] = $buff; for ($i=count($arquivos) -1;$i>=0;$i--) { $ultimamodif = date('F d Y, H:i:s', filemtime($arquivos[$i])); echo $arquivos[$i]." ".$ultimamodif."<br>"; } ?>
  11. opa então ta errado seus loops da parte debaixo... tenta assim <?php $hora_array = array(9, 13, 17); $dia = "19/04/2012"; echo "<tr>"; echo "<td>$dia</td>"; //imprimindo o array nas posições certas for ($i = 0; $i < 24; $i++) { if (in_array($i, $hora_array)) echo "<td>$i</td>"; else echo "<td>-</td>"; } echo "</tr>"; ?> abrx
  12. bom vamos lá... se as páginas são sequênciais exemplo 1,2,3,4,5,6... por ai vai e são cadastradas assim dessa forma... ou seja, a cada página que vai sendo adicionada a pessoa que está escaneando digita o número da página que cai num campo do bd certo simples, pela lógica, a várias formas... simplesmente liste todas as páginas no banco de dados de um determinado documento, pegue o valor total que foi passado e ande com um loop de 1 até o valor total verifica quais estão faltando... você pode fazer, dando um loop verificando de um a um ou armazenando em uma array e comparando... eu faria em uma array exemplo php + mysql $totalpaginas = $_POST['totalpaginas']; $sql = "SELECT pagina FROM documentos WHERE codigodocumento = '".$_POST['codigodoc']."'"; $query = mysql_query($sql, $db_con); //pega todas as paginas cadastradas de um documento e armazena em uma array $arr_paginas = array(); while ($registro = mysql_fetch_array($query)) $arr_paginas[] = $registro['pagina']; //anda de 1 até o total de páginas e verifica se está faltando... $arr_faltando = array(); for ($i=1;$i<=$totalpaginas;$i++) if (array_search($i, $arr_paginas) === FALSE) $arr_faltando[] = $i; pra saber se há páginas faltando simplesmente de um count na arr_faltando exemplo if (count($arr_faltando) > 0) então há páginas faltando... para saber quais estão faltando por exemplo for ($i=0;$i<count($arr_faltando);$i++) $faltando .= $i.","; echo "Estão faltando as seguintes páginas: ".$faltando; espero q te ajude... abrs
  13. amigo... tudo é possível... problema é que scripts prontos são feitos da maneira em que o programador do mesmo fez, do jeito dele e da forma como ele pensava, ou se achava ou não que recursos poderiam ter ou não no mesmo... ou seja, as vezes essas simples mudanças ou adição de recursos implicam em várias mudanças no sistema, desde estruturas de tabela, etc... se você não manja de programação etc, principalmente na área que foi desenvolvido o script ai torna mais complicado... ainda mais assim somente falando, você teria que postar códigos, entender o que cada código ta fazendo... e no caso, seria mais fácil você contratar um freelance pra alterar pra você, pelo simples fato que como você comprou você não deve postar todos os códigos aqui, e sem todos os códigos não tem como alguém dizer a você mexe nisso ou mexe naquilo pois tem várias coisas envolvidas, como mencionei estruturas de tabelas, até mesmo criação de outras tabelas, etc resumindo, aconselho você a contratar um programador freelance pra ele ver os códigos e tudo mais... fora isso acredite, meio que impossível te ajudar... abrs
  14. essa virgula ai em data creio que esteja errado... INSERT INTO programa(data, <- ??) VALUES('$dtprog') INSERT INTO programa (data) VALUES ('$dtprog') outra coisa, seu campo "data" na tabela "programa" é que tipo? supostamente deve ser date? ou ...datetime? dessa forma ai que você passou tem que estar varchar senão creio que não vai aceitar a menos que você digite a data no padrão MySQL no campo...
  15. Churc

    IFRAME EM PHP (URGENTE)

    fala brother... justamente igual do tvthudinha que você passou... copiando o código fonte e somente alterando... <html> <head> <meta http-equiv="Content-Language" content="pt-br"> <style type="text/css"> body { padding:0px; } </style> </head> <body leftmargin="0" topmargin="0"> <iframe src="<? echo $_GET["l"]; ?>" id="tv" name="tv" width="468" height="350" scrolling="no" frameborder="0" style="border:0px"></iframe> </body> </html> Lembrando que esse código fonte tem que ser salvo como .php a extensão... sua hospedagem precisa ter suporte PHP as dimensões do iframe são as mesmas que do tvthudinha... removi as propagandas... do resto é igual basta passar o URL e no final do arquivo ?l=URLQUEVOCEQUER o l no final do arquivo você pode trocar por qualquer coisa exemplo... "path", "url" ai basta colocar entre as aspas do echo $_GET[""]; o que você colocou exemplo se fosse url echo $_GET["url"]; e passaria seusite.com/paginasalvaem.php?url=http://www.uol.com.br abrs
  16. Churc

    JSON com PHP

    fala brother... vou postar do jeito que fiz uma vez... dando um post pra uma página php usando ajax/jquery e ela retorna uma array com encode em json em um sistema de callcenter que como era muita requisição tive de usar ajax e tal e também tive dificuldade fuçando e pesquisando consegui da seguinte forma... somente exemplo... não ta o código original mas a idéia é a mesma... #Página PHP que processa o post (processa.php) <? //você pode pegar o post do AJAX aqui $parametro1 = $_POST["parametro1"]; //Script $parametro2 = $_POST["parametro2"]; //Brasil $result = array(); $result["apelido"] = "Churc"; $result["forum"] = "Script Brasil"; //pagação $result["email"] = "cebasso at gmail .com"; $result["data"] = "01/03/1984"; echo json_encode($result); ?> #Pagina que da o post pra página acima e processa o resultado quebrando as arrays por chaves function quebraArray(chave, valor) { var buff = ''; switch (chave) { case 'apelido': alert('O apelido é ' + valor); break; case 'forum': alert('O fórum é ' + valor); break; case 'email': alert('O email é ' + valor); break; case 'data': buff = valor.toString(); var arr_buff = buff.split('/'); alert('Dia ' + arr_buff[0] + ' Mês ' + arr_buff[1] + ' Ano ' + arr_buff[2]); break; } } function processaArray(arr, retorno) { for (var k in arr) { if ($.isArray(arr[k]) || ((typeof arr[k] == 'object') && (arr[k] !== null))) processaArray(arr[k], retorno); else retorno(k, arr[k]); } } $.ajax( { url: "processa.php", //pagina la de cima... data: 'parametro1=Script&parametro2=Brasil', type: 'post', success: function(json) { var dados = eval('(' + json + ')'); processaArray(dados, quebraArray); } } ); //$ ve se te ajuda... abrx
  17. Churc

    Retirar item array

    posta como está fazendo... da forma que você explicou não da pra te ajudar... porque realmente é um unset que remove um item de uma array... mas se não ta dando certo então tem outro problema...
  18. Churc

    Web Update

    opa da uma olhada no repositório 4shared dele... http://www.4shared.com/dir/573181/3065a3a3/sharing.html ou diretamente nesse de update... http://www.4shared.com/zip/IbJSTTqB/Update...e_programa.html? abrs
  19. Churc

    Imprimir Maior e Menor

    e outra coisa, não só o loop, você esta comparando errado... se usa == para se comparar 2 valores e não somente = como você comparou no seu loop if ($maior = $temp[$i]) mas simplificando, da maneira que passei é pra funcionar... abrs
  20. Churc

    Imprimir Maior e Menor

    opa então, vai mostrar todos porque você está dando loop... tenta assim troque isso for ($i = 0; $i < 11; $i++) { if ($maior = $temp[$i]) { echo "Maior Temperatura foi: " . $maior . "<br>"; echo "No mes de : " . $mes[$i] . "<br>"; } else { $i++; } } por isso $arr_key = array_search($maior, $temp); echo "Maior Temperatura foi: " . $maior. "<br>"; echo "No mes de : " . $mes[$arr_key] . "<br>"; testa ai rsr abrs
  21. opa num sou dessa área de php e faz tempo que não posto no fórum mass olhando a lógica Repara que você ta dando um loop aqui while ($row = mysql_fetch_array($rs)) { $findMat = "select MatFuncionario from acesso where IP = '".$row['ip']."' order by Codigo desc limit 1"; ... e lá embaixo na "sessão" atual do usuário, ou seja, do navegador que está acessando esta página no momento você define um valor que foi pegando no loop ou seja, logicamente sempre vai ficar o último pois é onde o loop para... você não faz nenhum tipo de comparação se for a máquina do cara o valor atual do loop então $_SESSION['username'] = ... Agora também não entendo porque você coloca um valor de login de usuário nessa página, não seria melhor colocar isso na página de login? exemplo quando o usuário fez login, $_SESSION['username'] = $_POST['login']; enfim se não ajudei espero que não atrapalhei kk abrs!
  22. Sim sim, só não entendo porque ai não atualiza, fiz uns testes aqui e atualiza normal... Windows 7 x64 Sem idéia agora hehe Já fucei aqui mas não resolveria seu problema, já que aqui funciona normal e eu não consigo emular dessa forma ai qualquer coisa eu posto aqui abrx
  23. Se voce ta pegando o tamanho do arquivo via código, supostamente não precisa dessa parte de atualizar pasta do Windows a menos que voce ta fazendo a arte de utilizar um Explorer em seu programa já que voce ta dando um foreground em uma janela chamada Sigi e do Windows é Cabinet Enfim, resumindo pega o tamanho do arquivo tipo pelo código abaixo function GetFileSize(const szFile: String): Integer; var SearchRec: TSearchRec; sgPath: string; inRetval, I1: Integer; begin sgPath := ExpandFileName(szFile); I1 := -1; try inRetval := FindFirst(ExpandFileName(szFile), faAnyFile, SearchRec); if inRetval = 0 then I1 := SearchRec.Size; finally SysUtils.FindClose(SearchRec); end; Result := I1; end; abrax
  24. Para chamar no sentido de "Executar" você pode usar WinExec WinExec(PChar('caminho e nome do executável.exe'), SW_SHOWNORMAL); Para uma execução mais avançada pode-se usar o shell execute tb ShellExecute(Handle; 'open', PChar('caminho e nome do executável.exe'), PChar('Parametros se houver senao coloque nil'), nil, SW_SHOWNORMAL); bjs
  25. opa 1 - Para que serve este CODIGO FONTE? Isto é um manifesto... Ai você define propriedades como os privilegios que seu Software precisa no sistema, por exemplo, se necessita de privilégios administrativos... <requestedExecutionLevel level="asInvoker" uiAccess="false"/> Se você mudar o level para "requireAdministrator" seu programa vai ficar no icone aquele escudo do UAC do Vista/7 e quando executar vai pedir "elevação de usuário"... aquela janela chata que fica pedindo "Yes / No", "Allow / Not Allow", etc... E outras propriedades... tambem não sei muito a respeito, mas o google deve saber se voce procurar por "manifesto" ou em ingles "application manifest" Só tem funcionalidade no Windows Vista pra cima... vai ser muito útil futuramente... pode ver que envolve propriedades de Linguagem e tal, arquitetura do processador... Vai ser muito util ainda, mas atualmente acredito que pra maioria não rs 2 - Porque o EXE do delphi2010 esta tão grande? Porque o Delphi 2010 vem como padrão UNICODE e todos os outros Delphi vinha como padrão ANSI O Windows desde versões acho que o XP ou até mesmo o 98 tinha suporte a UNICODE, por isso na API do Windows nós vemos tipo NomedaFuncaoW e NomedaFuncaoA Isto quer dizer W = WideString (Unicode) e A = ANSI Unicode é uma tabela de caracteres com suporte a idiomas asiaticos, tipo aquelas letras estranhas da Russia, China, Japão, Filipinas, Arábia, sabe? Então, o que faz seu executavel ficar grande é que ANSI usa 1 byte por caracter e Unicode 2, resumindo, dobre o tamanho do Executavel na parte da Tabela de Caracteres O Delphi 2010 não possibilita mudar pra ANSI e usa como padrão a API do Windows W como explicado acima Por isso eu não uso o Delphi 2010, primeiro porque meu programa no máximo seria em Inglês e Inglês é ANSI, segundo porque meu programa jamais vai ter suporte a estas linguas e terceiro porque meu executavel fica muito grande, meu projeto em si pra ser mais sincero e quarto porque não tem como dar um switch pra ANSI rs Isto é um dos motivos que muitos não estão adotando o Delphi 2010... acredito que por tantas reclamações, a proxima versão do Delphi vai ter alguma diretiva de compilação para deixar em modo ANSI... Detalhe, passar códigos já antigos pra suporte Unicode não é nada fácil... Char tem que ser AnsiChar porque no 2010 é WideChar e da incompatibilidade... String tem que dar typecast maior rolo... Ah só um detalhe... nem que seja milésimos de segundo, um executável em Unicode é mais rápido... Porque o Windows a partir do Vista se não me engano, ou XP não sei, processa em Unicode e quando é ANSI ele faz o seguinte ANSI EXE ---> Função ANSI ---> Transforma pra Unicode ---> Processa como Unicode ---> Volta pra ANSI ---> EXE Unicode EXE ---> Função Unicode ---> Processa ---> EXE Little bit more fast :) 3 - Como minha licença TRIAL já vai expirar, gostaria de saber se LAZARUS e uma boa escolha? Depende, Lazarus é bom se voce não precisa de muita coisa tipo, componentes avançados que normalmente não existem para Lazarus... Se seu software é coisa tranquila tipo Banco de Dados e tal, coisas do tipo, teste o Lazarus porque eu testei e é praticamente um Delphi... Só como falei mesmo, componentes especificos não acha pra ele, mas acha "paralelo"
×
×
  • Criar Novo...