Ir para conteúdo

Renato

Héroi
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    hoje eu to nostálgico

    10 anos vai ser uma data histórica  
  2. Gostei
    Renato recebeu reputação de Pedro. em [PHP] Random Key   
    Galera, estava colocando confirmação por email no sistema de cadastro de um site que estou fazendo, então tive que fazer essa função pra gerar uma chave de ativação pra cada user.
    Ai resolvi postar aqui.

    A função gera x caracteres diferentes que incluem todo o alfabeto em maiusculo, todo o alfabeto em minusculo e números (26 + 26 + 10 = 62 caracteres diferentes)


    <?php
    function keyrand($len = 10) {
    $array = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0');
    $key = array();

    for($i = 1; $i <= $len; $i++)
    {
    $r = rand(0,count($array));
    $key[$i] = $array[$r];
    }
    return join($key);
    }
    ?>
    [/code] Exemplos de uso: [code]
    <?php echo keyrand(); ?>
    Por padrão ele irá gerar randomicamente 10 caracteres diferentes.
    <?php echo keyrand(15); ?>
    [/code]
    Irá gerar 15 caracteres diferentes. Ou substitua o 15 pela quantidade de caracteres que quer gerar.
  3. Gostei
    Renato recebeu reputação de gpetao em YurOTS 7.6 Editado   
    Cara te amo.
    Se a gente não começar postar conteúdo vai ficar parado mesmo.
    É que eu ando muito ocupado ultimamente com coisas mais importantes, mas quando eu tiver um tempo vo postar bastante conteúdo, rs.
    REP+
  4. Gostei
    Renato recebeu reputação de BlackLubbuk em Criando Spells para seu servidor!   
    Putz cara, perfeito.
    Rep+
  5. Curtir
    Renato recebeu reputação de lassdarck2 em [TalkAction] Criar Logs (GM+)   
    Fiz o script para o pedido:
    Créditos no script.
    Explicação: O GM fala /createlog Texto, e o texto é gravado dentro de um arquivo chamado logs.txt na data do seu server.







    Em data/talkactions/scripts crie um arquivo chamado createlog.lua e bote dentro:

    --[Created by Renato Ribeiro for TibiaKing.com]--
    --[Pedido: http://tibiaking.com/forum/topic/2626-talkaction-pedido-logs-para-gms]--

    function onSay(cid, words, param, channel)
    local file = "data/logs.txt"
    local name = getPlayerName(cid)

    if(param == '') then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Erro: Sem parametro.")
    return true
    else
    doWriteLogFile(file, "["..name.."] Log: "..param..".")
    end
    end
    [/code] Agora abra o arquivo [color=#0000FF][b]talkactions.xml[/b][/color] na pata [b]data/talkactions[/b] e bote esta tag: [code]<talkaction log="yes" access="3" words="/createlog" event="script" value="createlog.lua"/>

    Pronto, agora sempre que um gm, cm ou god falar "/createlog Texto", o texto será gravado no arquivo logs.txt que será criado na pasta data do seu server.

    É isso!
  6. Obrigado
    Renato recebeu reputação de Cain Jorge em [Talk] Teleportar player pra qualquer lugar   
    Créditos no Script

    Explicação: Simples comando pra teleportar o player para qualquer lugar
    Exemplo: /tt Renato, 350, 147, 7
    Sem bugs! 100%


    Vá em data/talkactions/scripts copie qualquer arquivo, renomeie para teleportthing.lua e cole dentro:


    --[by Renato Ribeiro to TibiaKing.com]--

    function onSay(cid, words, param, channel)
    if(param == '') then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "É necessário um paramêtro.")
    return TRUE
    end

    local prm = string.explode(param, ",")
    local plr = getPlayerByName(prm[1])

    if (plr == nil) then
    return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O player está offline ou não existe.")
    elseif (prm[4] == nil or prm[4] == '') then
    return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "É necessário todas as coordenadas x, y, z, respectivamente separada por vírgulas.")
    else
    doTeleportThing(plr, {x=prm[2], y=prm[3], z=prm[4]})
    doSendMagicEffect(getCreaturePosition(cid), 10)
    return TRUE
    end
    end
    [/code] Va em data/talkactions/talkactions.xml e ponha em gamemaster ou em qualquer lugar: [code]<talkaction log="yes" words="/tt" access="3" event="script" value="teleportthing.lua">

    Não retire o acess="3", IMPORTANTE!


    Bjundas</talkaction>
  7. Curtir
    Renato recebeu reputação de Cain Jorge em Mapping Inspirations   
    Lpz, você me tem



  8. Curtir
    Renato recebeu reputação de Cain Jorge em Mapping Inspirations   
    Olá galera.
    Bom, pra quem me conhece a bastante tempo sabe que eu já fui mapper. Eu comecei minha jornada no Open Tibia justamente como mapping, e não como programador (como muitos pensam).
    Eu sempre tive esse fascínio por criação. Não é a toa que também sou web designer.
    Mas hoje em dia para mim mappear não há mais tempo, ainda tão novo e tenho meus compromissos com o trabalho, sobra pouco tempo, e o tempo que resta eu dedico à programação, que é a carreira que eu pretendo seguir.
    Pois bem, decidi criar este tópico com as melhores (ao meu ver) imagens de mapping, juntos com o autor é claro, que servirá como inspiração para as novas gerações do mapping que virão (:


    Que ponte magnífica, mas vejo estragos, será que é segura?
    Autor: Peroxide


    Onde estou? é tudo tão diferente, tão... aterrorizador.
    Autor: Neon


    Que tal uma pontezinha para evitar possíveis quedas? Não queremos ver ninguém se machucar!
    Autor: HesteN


    Um pouco de natureza, ahh, que ar bom de se respirar em frente à esta linda cachoeira!
    Autor: Peroxide


    Pena que em lugares tão bonitos, árvores exuberantes, existam caçadores, pior para eles.
    Autor: Peroxide


    Sente um calafrio na espinha?
    Autor: Illusion


    Vejo sábios elfos à me guiar.
    Autor: Peroxide
     

    Uma casa na montanha, rodeada por natureza.
    Autor:

    --
    Logo logo tem mais, só ficar ligado aqui.
  9. Gostei
    Renato recebeu reputação de XLetinhoBRX em Mapping Inspirations   
    Olá galera.
    Bom, pra quem me conhece a bastante tempo sabe que eu já fui mapper. Eu comecei minha jornada no Open Tibia justamente como mapping, e não como programador (como muitos pensam).
    Eu sempre tive esse fascínio por criação. Não é a toa que também sou web designer.
    Mas hoje em dia para mim mappear não há mais tempo, ainda tão novo e tenho meus compromissos com o trabalho, sobra pouco tempo, e o tempo que resta eu dedico à programação, que é a carreira que eu pretendo seguir.
    Pois bem, decidi criar este tópico com as melhores (ao meu ver) imagens de mapping, juntos com o autor é claro, que servirá como inspiração para as novas gerações do mapping que virão (:


    Que ponte magnífica, mas vejo estragos, será que é segura?
    Autor: Peroxide


    Onde estou? é tudo tão diferente, tão... aterrorizador.
    Autor: Neon


    Que tal uma pontezinha para evitar possíveis quedas? Não queremos ver ninguém se machucar!
    Autor: HesteN


    Um pouco de natureza, ahh, que ar bom de se respirar em frente à esta linda cachoeira!
    Autor: Peroxide


    Pena que em lugares tão bonitos, árvores exuberantes, existam caçadores, pior para eles.
    Autor: Peroxide


    Sente um calafrio na espinha?
    Autor: Illusion


    Vejo sábios elfos à me guiar.
    Autor: Peroxide
     

    Uma casa na montanha, rodeada por natureza.
    Autor:

    --
    Logo logo tem mais, só ficar ligado aqui.
  10. Gostei
    Renato recebeu reputação de Calisto em Callbacks   
    ACTIONS


    onUse(cid, item, fromPosition, itemEx, toPosition)
    onLogin(cid)
    onLogout(cid)
    onAdvance(cid, skill, oldLevel, newLevel)
    onStatsChange(cid, attacker, type, combat, value)
    onDirection(cid, old, current)
    onOutfit(cid, old, current)
    onSendMail(cid, receiver, item, openBox)
    onReceiveMail(cid, sender, item, openBox)
    onTradeRequest(cid, target, item)
    onTradeAccept(cid, target, item, targetItem)
    onJoinChannel(cid, channel, users)
    onLeaveChannel (cid, channel, users)
    onLook(cid, thing, position, lookDistance)
    onThink(cid, interval)
    onTextEdit(cid, item, newText)
    onReportBug(cid, comment)
    onAreaCombat(cid, tileItem, tilePosition, isAggressive)
    onPush(cid, target)
    onTarget(cid, target)
    onFollow(cid, target)
    onCombat(cid, target)
    onAttack(cid, target)
    onCast(cid, target)
    onKill(cid, target, lastHit)
    onDeath(cid, corpse, deathList)
    onPrepareDeath(cid, deathList)
    [/code] [center][/center] [center][size=8]GLOBAL EVENTS[/size][/center] [code]onThink(interval)
    onStartup()
    onShutdown()
    onGlobalSave()
    onRecord(current, old, cid)
    onTime() onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    onEquip(cid, item, slot)
    onDeEquip(cid, item, slot)
    onAddItem(moveItem, tileItem, position, cid)
    onRemoveItem(moveItem, tileItem, position, cid)[/code] [center][/center] [center][size=8]SPELLS[/size][/center] [code]onCastSpell(cid, var) onSay(cid, words, param, channel) onUseWeapon(cid, var)



    • Retirado do SCRIPTSYSTEM_HELP, doc das Sources do TFS
    CREATURE SCRIPTS MOVEMENTS TALKACTIONS WEAPONS
  11. Gostei
    Renato recebeu reputação de Victor Cain J em Mapping Inspirations   
    Olá galera.
    Bom, pra quem me conhece a bastante tempo sabe que eu já fui mapper. Eu comecei minha jornada no Open Tibia justamente como mapping, e não como programador (como muitos pensam).
    Eu sempre tive esse fascínio por criação. Não é a toa que também sou web designer.
    Mas hoje em dia para mim mappear não há mais tempo, ainda tão novo e tenho meus compromissos com o trabalho, sobra pouco tempo, e o tempo que resta eu dedico à programação, que é a carreira que eu pretendo seguir.
    Pois bem, decidi criar este tópico com as melhores (ao meu ver) imagens de mapping, juntos com o autor é claro, que servirá como inspiração para as novas gerações do mapping que virão (:


    Que ponte magnífica, mas vejo estragos, será que é segura?
    Autor: Peroxide


    Onde estou? é tudo tão diferente, tão... aterrorizador.
    Autor: Neon


    Que tal uma pontezinha para evitar possíveis quedas? Não queremos ver ninguém se machucar!
    Autor: HesteN


    Um pouco de natureza, ahh, que ar bom de se respirar em frente à esta linda cachoeira!
    Autor: Peroxide


    Pena que em lugares tão bonitos, árvores exuberantes, existam caçadores, pior para eles.
    Autor: Peroxide


    Sente um calafrio na espinha?
    Autor: Illusion


    Vejo sábios elfos à me guiar.
    Autor: Peroxide
     

    Uma casa na montanha, rodeada por natureza.
    Autor:

    --
    Logo logo tem mais, só ficar ligado aqui.
  12. Gostei
    Renato recebeu reputação de Victor Cain J em Mapping Inspirations   
    Lute! Não podemos deixar envenenar nossas terras!
    Autor: Magnetico


    Faraós não são de nada!
    Autor: WardawG


    Ufa! Escapei por pouco.
    Autor: Magnetico


    Ele realmente acha que me assusta?
    Autor: WardawG


    Hmmm, nature!
    Autor: knatte1


    Uma breve caçada em dragões, típico.
    Autor: Leftwing


    Sinistro!
    Autor: Infesty


    Só de vigia.
    Autor: Magnetico


    Nômades malditos, deixe-me passar!
    Autor: Infesty


    Pow, morri :/
    Autor: BardockTornado


    Meu reinado acaba de começar!
    Autor: Infesty


    Curtindo uma prainha ai, quem topa?
    Autor: AundSoul


    Ar fresco!
    Autor: BardockTornado


    Olá, alguém ai?
    Autor: Infesty


    Épico?
    Autor: TILFen
  13. Gostei
    Renato recebeu reputação de Zauster em [Resolvido] Atributos em Itens   
    mariatti,
    A gente quer te ajudar, assim como vem ajudando em todas as suas dúvidas.
    Mas cara, ajude-nos também, escreva certo, não digo abreviação do tipo "vc", "intão", "agnt", mas como você formula as frases. Eu não entendo metade dos seus posts, não sei como o pessoal que te ajuda entende.
    Não custa nada você fazer esse favorzinho né? Valeu!!

    Abraços!
  14. Gostei
    Renato recebeu reputação de Zauster em [Resolvido] Atributos em Itens   
    Não força (:
    Faça o mínimo necessário para a gente entender.
    Somente para te ajudar, ou seja, para seu próprio benefício.
  15. Gostei
    Renato recebeu reputação de VertusSpriter em Mapping Inspirations   
    Olá galera.
    Bom, pra quem me conhece a bastante tempo sabe que eu já fui mapper. Eu comecei minha jornada no Open Tibia justamente como mapping, e não como programador (como muitos pensam).
    Eu sempre tive esse fascínio por criação. Não é a toa que também sou web designer.
    Mas hoje em dia para mim mappear não há mais tempo, ainda tão novo e tenho meus compromissos com o trabalho, sobra pouco tempo, e o tempo que resta eu dedico à programação, que é a carreira que eu pretendo seguir.
    Pois bem, decidi criar este tópico com as melhores (ao meu ver) imagens de mapping, juntos com o autor é claro, que servirá como inspiração para as novas gerações do mapping que virão (:


    Que ponte magnífica, mas vejo estragos, será que é segura?
    Autor: Peroxide


    Onde estou? é tudo tão diferente, tão... aterrorizador.
    Autor: Neon


    Que tal uma pontezinha para evitar possíveis quedas? Não queremos ver ninguém se machucar!
    Autor: HesteN


    Um pouco de natureza, ahh, que ar bom de se respirar em frente à esta linda cachoeira!
    Autor: Peroxide


    Pena que em lugares tão bonitos, árvores exuberantes, existam caçadores, pior para eles.
    Autor: Peroxide


    Sente um calafrio na espinha?
    Autor: Illusion


    Vejo sábios elfos à me guiar.
    Autor: Peroxide
     

    Uma casa na montanha, rodeada por natureza.
    Autor:

    --
    Logo logo tem mais, só ficar ligado aqui.
  16. Gostei
    Renato recebeu reputação de Bluetooth em Transformando Itens   
    Faz o seguinte.
    Vai em actions > scripts
    Cria um arquivo lua chamado silktoyarn.lua e poe:

    function onUse(cid, item, fromPosition, itemEx, toPosition)
    silk = item.itemid
    yarn = ID_DA_YARN
    if(getPlayerItemCount(cid, silk) == 10) then
    doPlayerRemoveItem(cid, silk, 10)
    doPlayerAddItem(uid, yarn)
    doSendMagicEffect(getPlayerPosition(cid), 15)
    end
    end[/code] Depois abra o arquivo actions > actions.xml E adicione a tag: [code]<action itemid="ID_DA_SILK" event="script" value="silktoyarn.lua"/>

    Não esqueça de substituir o ID_DA_SILK na tag XML e o ID_DA_YARN no código.

    Se não funcionar troque dentro do código lua, aonde diz 'silk = item.itemid' ponha o id da silk no lugar do item.itemid

    E não sei se vai funfar não porque fiz agora de improviso, não sei nem se as funções são essas mesmos.
    Mas qualquer coisa só falar aqui.

    Explicando o Script:
    Pra dar certo, você não pode clicar nele com 100, se não, não funciona mesmo. Você tem que separar 10 e clicar pra virar 1 yarn.
    Depois eu crio um script que transforma 100 em 10, 90 em 9 etc. Mas agora to ocupadão.


    Abraços e boa sorte!
  17. Gostei
    Renato recebeu reputação de johnconolly em [SEO] Otimização de Sites   
    >> SEO – Otimização De Sites >>

    Otimização de Sites é o conjunto de estratégias com o objetivo de potencializar e melhorar o posicionamento de um site nas páginas de resultados naturais (orgânicos) nos sites de busca. O termo SEO (do inglês, Search Engine Optimization, Acrônimo SEO, também traduzido no Brasil como “otimização para mecanismos de busca”) também se refere a indústria de consultoria, que trabalha na otimização de projetos e websites de seus clientes. Alguns comentaristas, e também alguns profissionais de SEO, dividiram os métodos usados por seus praticantes em categorias como os “SEO de White Hat” (geralmente utilizam métodos aprovados pelos sistemas de busca, como a prática de construção de conteúdo relevante e melhoria da qualidade do site), ou “SEO de Black Hat” (utilizam truques como “Cloaking”, que é a camuflagem do conteúdo real da página, e spamdexing). O termo “spamdexing” (originado da fusão de spam e indexing) refere-se a pratica de Spam direcionada aos motores de busca.
    Leia mais > Embi Marketing - Ipiranga
  18. Gostei
    Renato recebeu reputação de hylo em [TalkAction] Recarregar soft boots por comando   
    Créditos no script.

    Explicação: simples, você fala !soft e recarrega sua soft por X valor. Retorna erro caso não tenha a grana ou a worn soft boots.

    • Crie um arquivo LUA com o nome soft.lua em data/talkactions/scripts e ponha:

    --[Created by Renato Ribeiro to www.TibiaKing.com and others]--

    function onSay (cid, words, param, channel)
    local preco = 10000 -- gold coins
    local wornId = yyyy -- id da worn soft boots, bota descarregada
    local newId = xxxx -- id da nova soft boots, bota carregada

    if getPlayerItemCount(cid, wornId) >= 1 and getPlayerMoney(cid) >= preco then
    doSendMagicEffect(getPlayerPosition(cid), 12)
    doPlayerRemoveItem(cid, wornId)
    doPlayerAddItem(cid, newId)
    doPlayerRemoveMoney(cid, preco)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você recarregou sua soft por "..preco.." gps.")
    else
    doSendMagicEffect(getPlayerPosition(cid), 2)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem "..preco.." gps ou uma worn soft boots para poder recarregar.")
    return TRUE

    end
    end[/code] [color=#FF0000][b]Atenção![/b][/color] Aqui nestes dois locais: [i] local wornId = [color=#800080]yyyy[/color] local newId = [color=#000080]xxxx[/color][/i] Troque o [color=#800080]yyyy[/color] pelo ID da worn soft boots (descarregada) e o [color=#000080]xxxx[/color] pelo ID da soft boots (carregada). [b]• Depois em [color=#0000FF]data/talkactions/talkactions.xml[/color] ponha a tag em qualquer lugar:[/b] [code]<talkaction log="yes" words="!soft" access="0" event="script" value="soft.lua">

    E voalá! (:
    OBS: Script não testado!</talkaction>
  19. Gostei
    Renato recebeu reputação de hFrost em [Action] Quest que ganha crystal coins equivalente ao level   
    Créditos: Eu (por criar o script), thalia (por me ajudar e algumas correções básicas)
    Sei que parece um script básico, mas é que eu estou aprendendo ainda, então não reclama .l.

    Explicação: Se você for level 50 vai ganhar 50 crystal coins, se for level 10 vai ganhar 10 crystal coins etc.

    • Crie um arquivo LUA com o nome cclevelquest.lua em data/actions/scripts
    E ponha:


    function onUse(cid, item, fromPosition, itemEx, toPosition)

    local config = {
    storage = 1579,
    itemid = 2160,
    qnt = getPlayerLevel(cid),
    }

    if getPlayerStorageValue(cid, config.storage) == 1 then
    return doPlayerSendCancel(cid, "You already make this quest.")
    else
    setPlayerStorageValue(cid, config.storage, 1)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You received "..config.qnt.." crystal coins.")
    doPlayerAddItem(cid, config.itemid, config.qnt)
    end
    end
    [/code] Você pode trocar o itemid pra outro item que seja contável também.. mas não esquece de trocar o nome nessa linha: [code]doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You received "..config.qnt.." crystal coins.") Onde tá crystal coins. • Em actions.xml coloque <action actionid="9898" event="script" value="cclevelquest.lua"/>

    No mapeditor você vai colocar 9898 no actionid nas propriedades do chest e não em uniqueid

    Abraços.
  20. Gostei
    Renato recebeu reputação de ADM Milord em [Talk] Cassino System   
    Cassino System por talkaction.



    Créditos no script.

    Explicação: ele fala !apostar X, esse X é em mil, ou seja se eu falar !apostar 50, será 50k. O X não poderá ser maior do que o "max =" e menor do que o "min =" que será estipulado por você. Se o player ganhar, o premio será o valor que ele apostou multiplicado pelo valor do "premio =". As chances de o player ganhar está ali no "rdm = math.random(1,3)" no caso o player terá 1/3 (1 terço, ou, uma chance em três) chances de ganhar, se você mudar para (1,5) ele terá uma chance em 5 para ganhar, e assim sucessivamente. LEMBRANDO QUE VOCê DEVE MANTER O NÚMERO 1 E SÓ ALTERAR O SEGUNDO NÚMERO.

    • Crie um arquivo LUA com o nome cassino.lua em data/talkactions/scripts e ponha:


    function onSay (cid, words, param, channel)
    local prm = tonumber(param)
    local min = 1
    local max = 500
    local rdm = math.radom(1,3)
    local premio = 2 -- o valor que tiver aqui multiplica o valor apostado se o cara ganhar

    if (prm == nil) or prm < min or prm > max then
    doSendMagicEffect(getPlayerPosition(cid), 2)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa apostar no mínimo "..min.."k ou no máximo "..max.."k.")
    return TRUE
    elseif getPlayerMoney(cid) < prm*1000 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem "..prm.."k para apostar.")
    doSendMagicEffect(getPlayerPosition(cid), 2)
    return TRUE
    elseif rdm == 1 then -- ele ganhou
    doPlayerRemoveMoney(cid, prm*1000)
    doPlayerAddMoney(cid, (prm*1000)*premio)
    elseif rdm > 1 then -- ele perdeu
    doPlayerRemoveMoney(cid, prm*1000)
    doSendMagicEffect(getPlayerPosition(cid), 2)
    end
    return TRUE
    end
    [/code] [b]• Depois em [color=#006400]data/talkactions/talkactions.xml[/color] ponha a tag em qualquer lugar:[/b] [code]<talkaction log="yes" words="!apostar" access="0" event="script" value="addpremium.lua"/>
    Mude aonde esta "!apostar" para o comando que você deseja.


    Status: Não testado. //quem testar avise.
  21. Gostei
    Renato recebeu reputação de rodox2008 em [HTML + PHP] Formulário de Contato   
    Formulário de Contato - Funcionando


    Olá galera, o tutorial abaixo vai te ajudar a criar um formulário de contato que funciona perfeitamente!
    Basta seguir passo-a-passo, e caso surjam duvidas no meio do caminho, basta perguntar aqui mesmo.
    PS: É necessário um conhecimento de HTML e uma base em lógica de programação!

    1 - iremos criar o index.html onde ficará o formulário.


    <form action="enviar.php" method="POST">
    <input type="hidden">
    <table border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td>Nome:<br> <input type="text" size="30" name="nome" value=""></td>
    </tr>
    <tr>
    <td>E-mail:<br> <input type="text" size="30" name="email" value=""></td>
    </tr>
    <tr>
    <td>Assunto:<br> <input type="text" size="30" name="assunto" value=""></td>
    </tr>
    <tr>
    <td>Mensagem:<br> <textarea cols="40" rows="10" name="mensagem"></textarea>
    </td>
    </tr>
    <tr>
    <td> <input name="submit" type="submit" value=" Enviar "> <input name="reset" type="reset" value=" Limpar "></td>
    </tr>
    </table>
    </form>
    [/code] Acima, criei um formulário simples com NOME, EMAIL, ASSUNTO, MENSAGEM. Sinta-se a vontade para editar/adicionar, porem você deverá colocar name em todos os campos, exemplo: Campo do nome: <input type="text" size="30" [b]name="nome"[/b] value=""> Porque será usado no PHP, no envio para e-mail. Uma parte imporante e que não deve faltar também é o action="enviar.php" method="POST", dentro do form, pois o enviar.php é o nome do arquivo que iremos criar no segundo passo, onde ele enviará o email, e retornará as mensagens. [b][size=3][color=#FF0000]2[/color][/size] - Agora iremos criar a parte de PHP.[/b] Crie um arquivo [b]enviar.php[/b] com o código: [code]
    <?php
    $nome = $_POST["nome"];
    $email = $_POST["email"];
    $assunto = $_POST["assunto"];
    $mensagem = $_POST["mensagem"];
    global $email;
    $data = date("d/m/y"); //pegando a data do evio
    $hora = date("H:i"); //pegando a hora
    $ip = $_SERVER['REMOTE_ADDR']; //pegando ip do cara que enviou

    if($nome != NULL or $mensagem != NULL or $assunto != NULL or $email != NULL) {
    mail ("[email protected]", //email para enviar dados
    "$assunto",
    "Nome: $nome\nData: $data\nIp: $ip\nHora: $hora\nE-mail: $email\n\nMensagem: $mensagem",
    "From: $email"
    );
    echo "<p>Obrigado por entrar em contato, $nome</p>";
    echo "<p>Entraremos em contato quando possível</p>";
    }
    else {
    echo "<p>Mensagem não enviada, por favor preencha corretamente o formulário.</p>";
    }
    ?>



    Abaixo tem a explicação do código acima


    2.1 - Você vai setar as variáveis:
    $nome = $_POST["nome"];
    • = Aqui é o nome da variável, você a escolhe.
    • = Aqui é o nome do campo que voce usou no HTML (aonde vocês pois name="" que eu disse ser necessário)
    As outras variáveis são para pegar a hora, data, etc. Não mecha.


    2.2, você fará uma condição if, onde retornará erro caso não preenchido o formulário corretamente:
    if($nome != NULL or $mensagem != NULL or $assunto != NULL or $email != NULL) {
    • = Caso o campo do nome estiver em branco...
    • = Caso o campo da mensagem estiver em branco...
    E assim sucessivamente, você escolhe os campos necessários, só acrescentando or $variável != NULL

    2.3 - você fará a ação caso a condição do passo 2.2 for verdadeira, ou seja, estiver todos os campos preenchidos:
    mail ("[email protected]", //email para enviar dados
    "$assunto",
    "Nome: $nome\nData: $data\nIp: $ip\nHora: $hora\nE-mail: $email\n\nMensagem: $mensagem",
    "From: $email"
    );
    echo "<p>Obrigado por entrar em contato, $nome</p>";
    echo "<p>Entraremos em contato quando possível</p>";
    }
    • = Para onde enviará os dados do formulário depois do cara clicar em Enviar
    • = Aqui é a mensagem que aparecerá no email, as caracteres \n significam uma quebra de linha, ou seja, igual <br> do html
    • = Aqui é a mensagem que aparecerá pro usuário logo quando ele clicar em Enviar.


    2.4 - você fará a ação caso a condição do passo 2.2 for falsa, ou seja, estiver algum campo vazio:
    echo "<p>Mensagem não enviada, por favor preencha corretamente o formulário.</p>"; }
    • = Aqui vai a mensagem de ERRO.
  22. Gostei
    Renato recebeu reputação de Arysoooon em Criando Spells para seu servidor!   
    Putz cara, perfeito.
    Rep+
  23. Gostei
    Renato recebeu reputação de Silverz em Criando OTServ, IP Fixo, SqliteStudio e Colocando OTServ online   
    Arthur, a diferença é que o Matheus arruma...
    UHDAUSDHAUDHSAU

    Muito bom mat, rep+
  24. Gostei
    Renato recebeu reputação de Viny 13 em Mudar o nome da skill shielding   

    Daí eu já não sei se é pelo cliente ou pelo servidor...
  25. Gostei
    Renato recebeu reputação de kelvin9826 em [HTML + PHP] Formulário de Contato   
    Formulário de Contato - Funcionando


    Olá galera, o tutorial abaixo vai te ajudar a criar um formulário de contato que funciona perfeitamente!
    Basta seguir passo-a-passo, e caso surjam duvidas no meio do caminho, basta perguntar aqui mesmo.
    PS: É necessário um conhecimento de HTML e uma base em lógica de programação!

    1 - iremos criar o index.html onde ficará o formulário.


    <form action="enviar.php" method="POST">
    <input type="hidden">
    <table border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td>Nome:<br> <input type="text" size="30" name="nome" value=""></td>
    </tr>
    <tr>
    <td>E-mail:<br> <input type="text" size="30" name="email" value=""></td>
    </tr>
    <tr>
    <td>Assunto:<br> <input type="text" size="30" name="assunto" value=""></td>
    </tr>
    <tr>
    <td>Mensagem:<br> <textarea cols="40" rows="10" name="mensagem"></textarea>
    </td>
    </tr>
    <tr>
    <td> <input name="submit" type="submit" value=" Enviar "> <input name="reset" type="reset" value=" Limpar "></td>
    </tr>
    </table>
    </form>
    [/code] Acima, criei um formulário simples com NOME, EMAIL, ASSUNTO, MENSAGEM. Sinta-se a vontade para editar/adicionar, porem você deverá colocar name em todos os campos, exemplo: Campo do nome: <input type="text" size="30" [b]name="nome"[/b] value=""> Porque será usado no PHP, no envio para e-mail. Uma parte imporante e que não deve faltar também é o action="enviar.php" method="POST", dentro do form, pois o enviar.php é o nome do arquivo que iremos criar no segundo passo, onde ele enviará o email, e retornará as mensagens. [b][size=3][color=#FF0000]2[/color][/size] - Agora iremos criar a parte de PHP.[/b] Crie um arquivo [b]enviar.php[/b] com o código: [code]
    <?php
    $nome = $_POST["nome"];
    $email = $_POST["email"];
    $assunto = $_POST["assunto"];
    $mensagem = $_POST["mensagem"];
    global $email;
    $data = date("d/m/y"); //pegando a data do evio
    $hora = date("H:i"); //pegando a hora
    $ip = $_SERVER['REMOTE_ADDR']; //pegando ip do cara que enviou

    if($nome != NULL or $mensagem != NULL or $assunto != NULL or $email != NULL) {
    mail ("[email protected]", //email para enviar dados
    "$assunto",
    "Nome: $nome\nData: $data\nIp: $ip\nHora: $hora\nE-mail: $email\n\nMensagem: $mensagem",
    "From: $email"
    );
    echo "<p>Obrigado por entrar em contato, $nome</p>";
    echo "<p>Entraremos em contato quando possível</p>";
    }
    else {
    echo "<p>Mensagem não enviada, por favor preencha corretamente o formulário.</p>";
    }
    ?>



    Abaixo tem a explicação do código acima


    2.1 - Você vai setar as variáveis:
    $nome = $_POST["nome"];
    • = Aqui é o nome da variável, você a escolhe.
    • = Aqui é o nome do campo que voce usou no HTML (aonde vocês pois name="" que eu disse ser necessário)
    As outras variáveis são para pegar a hora, data, etc. Não mecha.


    2.2, você fará uma condição if, onde retornará erro caso não preenchido o formulário corretamente:
    if($nome != NULL or $mensagem != NULL or $assunto != NULL or $email != NULL) {
    • = Caso o campo do nome estiver em branco...
    • = Caso o campo da mensagem estiver em branco...
    E assim sucessivamente, você escolhe os campos necessários, só acrescentando or $variável != NULL

    2.3 - você fará a ação caso a condição do passo 2.2 for verdadeira, ou seja, estiver todos os campos preenchidos:
    mail ("[email protected]", //email para enviar dados
    "$assunto",
    "Nome: $nome\nData: $data\nIp: $ip\nHora: $hora\nE-mail: $email\n\nMensagem: $mensagem",
    "From: $email"
    );
    echo "<p>Obrigado por entrar em contato, $nome</p>";
    echo "<p>Entraremos em contato quando possível</p>";
    }
    • = Para onde enviará os dados do formulário depois do cara clicar em Enviar
    • = Aqui é a mensagem que aparecerá no email, as caracteres \n significam uma quebra de linha, ou seja, igual <br> do html
    • = Aqui é a mensagem que aparecerá pro usuário logo quando ele clicar em Enviar.


    2.4 - você fará a ação caso a condição do passo 2.2 for falsa, ou seja, estiver algum campo vazio:
    echo "<p>Mensagem não enviada, por favor preencha corretamente o formulário.</p>"; }
    • = Aqui vai a mensagem de ERRO.

Informação Importante

Confirmação de Termo