BLASSENweb

Upravený modul Feedback
Publikováno: Pátek, 30.06. 2006 - 16:57:26
Téma: Vše co se nějak vztahuje k xxNuke


dracek (hjosef.net) je věčně s něčím nespokojen ;-) a proto se není čemu divit že ani modul Feedback neušel jeho pozornosti.
Není se vlastně ani čemu divit, protože se jedná o celkem jednoduchý emailový formulář bez jakékoliv ochrany před spamery.
Věděl přesně jakou úpravu by rád, ale nějak mu to nešlo zkloubit dohromady tak aby to tvořilo kompaktní celek, tak jsme mu s tím malinko pomohli a zde je výsledek.


Doplněno:
  • Nutný opis bezpečnostního kodu před odesláním Emailu
  • Kontrola správnosti emailu
  • Záznam IP odesílatele

Nebudeme se dále moc zdržovat a zde máte celý kód, kterým stačí nahradit soubor index.php v adresáři /modules/Feedback/
{ Kód }:
     

<?php

/**
  * UNITED-NUKE CMS: Just Manage!
  * http://united-nuke.openland.cz/
  * http://united-nuke.openland.cz/forums/
  *
  * 2002 - 2005, (c) Jiri Stavinoha
  * http://united-nuke.openland.cz/weblog/
  *
  * Portions of this software are based on PHP-Nuke
  * http://phpnuke.org - 2002, (c) Francisco Burzi
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
  * of the License, or (at your option) any later version.
**/

/************************************************************/
/*  Upravený modul Feedback                                 */
/*  Nutný opis bezpečnostního kodu před odesláním Emailu    */
/*  kontrolu správnosti emailu a záznam IP odesílatele      */
/*   Jedná se o soubor z názvem   index.php                 */
/*  Vytvořily   dracek a Blassen  jinak taky   Hj&Bw        */
/*  29.6.2006                                               */
/************************************************************/

if (!stristr($_SERVER['SCRIPT_NAME'], "modules.php") OR !defined('UN_KERNELFILES_LOADED')) {
    die (
"You can't access this file directly...");
}

require_once(
"mainfile.php");
$module_name basename(dirname(__FILE__));
get_lang($module_name);

/**********************************/
/* Configuration                  */
/*                                */
/* You can change this:           */
/* $index = 0; (right side off)   */
/**********************************/
$index 1;
$subject $sitename." "._FEEDBACK;
/**********************************/


/////////////////////////////////////////////////////////////////
//// definice lang cz ktere nejsou v originalu Feedback modulu

define("_BW_SECCODEERROR","CHYBA: Vloľený bezpečnostní kód je nesprávný!"); 
define("_BW_SECURITYCODE","Bezpečnostní kód"); 
define("_BW_TYPESECCODE","Do tohoto pole vloľte bezpečnostní kód"); 
define("_BW_SECURITYIP","Z bezpečnostních důvodů bude dočasně zaznamenána vaąe IP adresa."); 
define("_BW_IP","IP adresa odesílatele"); 
define("_BW_VIP","Vaąe IP :"); 
////////// konec definice lang cz //////////////////////////////////////////////////////// 


include("header.php"); 
global 
$stop$ip$hostnm
$ip $_SERVER["REMOTE_ADDR"] ;
$hostnm gethostbyaddr("$ip");

        
mt_srand ((double)microtime()*1000000); 
        
$maxran 1000000
        
$random_num mt_rand(0$maxran); 
        
$datekey date("F j"); 
        
$rcode hexdec(md5($_SERVER['HTTP_USER_AGENT'].$sitekey.$_POST['random_num'].$datekey)); 
        
$code substr($rcode26); 

$cookie[0] = intval($cookie[0]);if ($cookie[1] != "") {    $result $db->sql_query("SELECT name, username, user_email FROM ".UN_TABLENAME_USERS." WHERE user_id='".$cookie[0]."'");    $row $db->sql_fetchrow($result);    $db->sql_freeresult($result);        if ($row['name'] != "") {            $sender_name $row['name'];        } else {            $sender_name $row['username'];        }    $sender_email $row['user_email'];} elseif ($opi != "ds") {    $sender_email "";}

$form_block 
    <center><br /><font class=\"title\"><b>"
._FEEDBACKTITLE."</b></font> 
    <br /><br /><font class=\"content\">"
._FEEDBACKNOTE."</font> 
    <form method=\"post\" action=\"modules.php?name=$module_name\"> 
    <p><strong>"
._YOURNAME.":</strong><br /> 
    <input type=\"text\" name=\"sender_name\" value=\"$sender_name\" size=\"30\"></p> 
    <P><strong>"
._YOUREMAIL.":</strong><br /> 
    <input type=\"text\" name=\"sender_email\" value=\"$sender_email\" size=\"30\"></p> 
    <P><strong>"
._MESSAGE.":</strong><br /> 
    <textarea name=\"message\" cols=\"50\" rows=\"15\" wrap=\"virtual\">$message</textarea></p> 
    <font color=\"red\">*</font><b>"
._BW_SECURITYCODE.":</b><br /><img src=\"?gfx=gfx&amp;random_num=".$random_num."\" border=\"1\" alt=\""._BW_SECURITYCODE."\" title=\""._BW_SECURITYCODE."\"> 
    <hr width=\"40%\" size=\"1\"> 
     "
._BW_TYPESECCODE.":<br /><input type=\"text\" name=\"gfx_check\" size=\"7\" maxlength=\"6\"><br /> 
    <input type=\"hidden\" name=\"random_num\" value=\""
.$random_num."\"> 
    <input type=\"hidden\" name=\"opi\" value=\"ds\"> 
    <p><input type=\"submit\" name=\"submit\" value=\""
._SEND."\"></p> 
    </form></center> 
"


OpenTable(); 

if (
$opi != "ds") { 
    echo 
"$form_block"
} elseif (
$opi == "ds") { 
    if (
$sender_name == "") { 
    
$name_err "<center><font class=\"option\"><b><i>"._FBENTERNAME."</i></b></font></center><br />"
    
$send "no"
    } 
    if (
$sender_email == "") { 
    
$email_err "<center><font class=\"option\"><b><i>"._FBENTEREMAIL."</i></b></font></center><br />"
    
$send "no"
    } 
     elseif ( !
eregi("^[a-zA-Z0-9_\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$"$sender_email ) ) 
    { 
            
$email2_err "<center><font class=\"option\"><b><i>"._BW_ENTERINVALIDEMAIL."</i></b></font></center><br />"
        
$send "no"
        } 
    if (
$message == "") { 
        
$message_err "<center><font class=\"option\"><b><i>"._FBENTERMESSAGE."</i></b></font></center><br>"
    
$send "no"
    } 
    if (!
$stop) { 
    if (
extension_loaded("gd") AND $code != $gfx_check AND ($gfx_chk == OR $gfx_chk == OR $gfx_chk == OR $gfx_chk == 7)) { 
    
$err_stop "<center><font class=\"option\"><b><i>"._BW_SECCODEERROR."</i></b></font></center>"
    
$send "no"
     } 
   } 
    if (
$send != "no") { 
    
$sender_name removecrlf($sender_name); 
    
$sender_email removecrlf($sender_email); 
    
$msg $sitename."\n\n"
    
$msg .= ""._SENDERNAME.": $sender_name\n"
    
$msg .= ""._SENDEREMAIL.": $sender_email\n"._BW_IP.": $ip - $hostnm \n\n"
    
$msg .= ""._MESSAGE.": $message\n\n"
    
$to $adminmail
    
$mailheaders "From: $sender_name <$sender_email>\n"
    
$mailheaders .= "Reply-To: $sender_email\n\n"
    
un_mail($to$subject$msg$mailheaders); 
    echo 
"<P><center><b>"._FBMAILSENT."</b></center></p>"
    echo 
"<P><center><i>"._FBTHANKSFORCONTACT."</i></center></p>"
    echo 
"<P><center><br /><br /><font class=\"content\">"._BW_SECURITYIP."<br />"._BW_VIP."<b> $ip </b></font></center></p>"
    } elseif (
$send == "no") { 
    
OpenTable2(); 
    echo 
"$name_err"
    echo 
"$email_err"
    echo 
"$email2_err"
    echo 
"$message_err"
    echo 
"$err_stop"
    
CloseTable2(); 
    echo 
"<br /><br />"
    echo 
"$form_block";   
    } 


CloseTable(); 
     echo 
"<br />"

include(
"footer.php"); 
?>

Doufáme že Vám tento článek pomohl pokud jste s tímto modulem měli podobný problém jako dracek.




Autor: Blassen & dracek








Tento článek si můžete přečíst na webu BLASSENweb
http://blassenweb.net

Tento článek najdete na adrese:
http://blassenweb.net/clanky/upraveny-modul-feedback/267
Magic SEO URL - Optimalizace pro vyhledávače