ekranda aldigim hata kodu

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/xxx.com/httpdocs/ziyaretci-defteri/class/expeniaZD.class.php on line 39

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/xxx.com/httpdocs/ziyaretci-defteri/class/expeniaZD.class.php on line 168

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/xxx.com/httpdocs/ziyaretci-defteri/class/expeniaZD.class.php on line 193
home/www.xxx.com/httpdocs/ziyaretci-defteri/class/expeniaZD.class.php kodu

<?php
/**
 * ExpeniaZD sınıf dosyası
 *
 * Expenia Internet Solutions tarafından ücretsiz dağıtılmakta olan bir ziyaretçi defteri scriptidir.
 * GNU Public License ile korunmakta olup altta olan linki kaldırmak yasaktır.
 *
 * @author Hüseyin Koyun <mail@huseyin.at>
 * @version 1.0 | 08.11.2011
 * @copyright Copyright (c) 2011, Expenia Internet Solutions
 * @link http://www.expenia.com
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 */
 
class ExpeniaZD {

    public $dbhost = 'localhost';
    public $dbname = 'expenia_zd';
    public $dbuser = 'root';
    public $dbpass = '';
    
    public $settings;
    
    /**
     * __construct fonksiyonunda veritabanı bağlantısını kurup,
     * ayarları alıyoruz
     */
    public function __construct($dbhost, $dbuser, $dbpass, $dbname)
    {
        $this->dbhost = $dbhost;
        $this->dbuser = $dbuser;
        $this->dbpass = $dbpass;
        $this->dbname = $dbname;
    
        mysql_connect($this->dbhost, $this->dbuser, $this->dbpass) or die(mysql_error());
        mysql_select_db($this->dbname) or die(mysql_error());
        mysql_query("SET NAMES 'utf8'");
        
        $this->settings = mysql_fetch_array(mysql_query("SELECT * FROM settings WHERE id = 1"));
    }
    
    /**
     *
     * SQL injection, XSS, vb açıklara karşı temizler
     *
     * @access public
     * @static
     * @param mixed
     * @return mixed 
     */
    public static function clean($var)
    {
        $var = trim(mysql_real_escape_string($var));
        
        if(get_magic_quotes_gpc()){
            $var = stripslashes($var);
        }
        
        return $var;        
    }
    
    /**
     *
     * veritabanına gönderilen ziyaretçi defteri kaydını ekler
     *
     * @access public
     * @param string isim soyisim
     * @param string email adresi
     * @param string mesaj
     * @return int|array eğer array dönüyorsa hataları liste
     */
    public function add_message($name, $email, $message)
    {
        // gelen değerleri temizliyoruz
        $name    = self::clean($name);
        $email   = self::clean($email);
        $message = nl2br($message);
        $message = mysql_real_escape_string($message);
        
        // unix timestamp 
        $timestamp = time();
        
        // ip adresi
        $ip = $_SERVER['REMOTE_ADDR'];
        
        // hataları kayıt edeceğimiz diziyi oluşturuyoruz.
        $errors = array();
        
        // eğer name değişkeni boş ise dizimize hatayı ekliyoruz.
        if(empty($name)){
            $errors[] = 'Adınızı soyadınızı yazmadınız.';
        }
        
        // eğer email değişkeni boş ise dizimize hatayı ekliyoruz
        if(empty($email)){
            $errors[] = 'E-Posta adresinizi yazmadınız.';
        }else{ // email değişkeni boş değilse geçerli olup olmadığını kontrol ediyoruz
            if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
                // eğer geçerli değil ise dizimize hatayı ekliyoruz
                $errors[] = 'Geçerli bir E-Posta adresi yazmadınız.';
            }
        }
        
        // mesaj alanı 6 karakterden az ise dizimize hatayı ekliyoruz
        if(strlen($message) < 6){
            $errors[] = 'Mesajınız çok kısa.';
        }
        
        // spam kontrol
        if(isset($_COOKIE['add'])){
            $minutes = 0;
            $seconds = $_COOKIE['add'] - time();
            if($seconds > 60){
                $minutes = floor($seconds / 60);
                $seconds = $seconds % 60;
            }
            $errors[] = 'Mesaj göndermek için '.$minutes.' Dakika ve '.$seconds.' Saniye beklemeniz gerekmektedir';
        }
        
        // kaç hata olduğunu sayıyoruz
        $count_errors = count($errors);
        
        // eğer yok ise..
        if($count_errors === 0){
            $approval = ($this->settings['approval'] == 0) ? 1 : 0;
            $add_data = mysql_query("INSERT INTO messages (name, email, message, approval, timestamp, ip) VALUES ('$name', '$email', '$message', '$approval', '$timestamp', '$ip')");
            
            if($add_data){
                setcookie("add", time()+(60*3), time()+(60*3));
                return true;
            }
            
        }else{
            // eğer hata var ise hataları geri döndürüyoruz
            return $errors;
        }
    }
    
    /**
     *
     * veritabanından bütün verileri çeker
     *
     * @access public
     * @return array
     */
    public function get_messages()
    {
        // eğer yönetici giriş yapmış ise bütün mesajları alıyoruz
        if($_SESSION['loggedIn'] == 1){
            $sql = "SELECT * FROM messages ORDER BY id DESC";
        }else{ // giriş yapmamışsa sadece onaylanmış mesajları alıyoruz
            $sql = "SELECT * FROM messages WHERE approval = '1' ORDER BY id DESC";
        }
        
        //adres çubuğuna yazılanı çekiyor kontrol ediyoruz
        $this->pageNumber = (isset($_GET['page']) && is_numeric($_GET['page'])) ? $_GET['page'] : 1;

        // sayfa başı kaç öğe olacağını belirliyoruz
        $this->perPage = 10;
        
    	//sayfanın sağında ve solunda kaç sayfa göstereceğini belirliyoruz
        $this->padding = 5;
        
        //sayfanın kaçtan başlayacağını hesaplıyoruz
        $this->startIndex = ($this->pageNumber * $this->perPage) - $this->perPage;
        
        //toplam kaç adet veri olduğunu alıyoruz
        $this->rowCount = mysql_num_rows(mysql_query($sql));
        
        // ve veritabanından verilerimizi çekiyoruz
        $result = mysql_query($sql." LIMIT $this->startIndex, $this->perPage");
        
        
        $data = array();
        
        $months = array(
            'January' => 'Ocak',
            'February' => 'Şubat',
            'March' =>  'Mart',
            'April' => 'Nisan',
            'May' => 'Mayıs',
            'June' => 'Haziran',
            'July' => 'Temmuz',
            'August' => 'Ağustos',
            'September' => 'Eylül',
            'October' => 'Ekim',
            'November' => 'Kasım',
            'December' => 'Aralık'
        );
        
        $i = 0;
        //çektiğimiz verileri array'e tanımlayıp döndürüyoruz
        while($row = mysql_fetch_array($result)){
            $data[$i]['id']         = $row['id'];
            $data[$i]['name']       = $row['name'];
            $data[$i]['message']    = $row['message'];
            $data[$i]['approval']   = $row['approval'];
            $data[$i]['ip']   = $row['ip'];
            $data[$i]['date']       = date('d', $row['timestamp']).' '.$months[date('F', $row['timestamp'])].', '.date('Y', $row['timestamp']);
            $data[$i]['time']       = date('H:i:s', $row['timestamp']);
            $i++;
        }
        
        return $data;
    }
    
    /**
     *
     * sayfaları yazdırmaya yarayan fonksiyon
     *
     * @access public
     * @return html 
     */
    public function display_pagination()
    {
        //toplam sayfa sayısı
		$this->numOfPages = ceil($this->rowCount / $this->perPage);

        $return = '';
        $return .= '<div id="pagination">';
        $return .= '<ul>';
        
        if($this->pageNumber > 1){
            $return .= '<li><a href="?page='.($this->pageNumber - 1).'">« Geri</a></li>';
        } 
		##################################
		if(($this->pageNumber - $this->padding) > 1){
			$return .= '<li><a>...</a></li>';
			
			$this->lowerLimit = $this->pageNumber - $this->padding;
			
			for($i = $this->lowerLimit; $i < $this->pageNumber; $i++){
				$return .= '<li><a href="?page='.$i.'">'.$i.'</a></li>';
			}
		}else{
			for($i = 1; $i < $this->pageNumber; $i++){
				$return .= '<li><a href="?page='.$i.'">'.$i.'</a></li>';
			}
				
		}
		#####################################
        
        if(($this->pageNumber != 0)){
			$return .= '<li><a class="current">'.$this->pageNumber.'</a></li>';
		}
        
        ######################################
		if($this->pageNumber + $this->padding < $this->numOfPages) {
			$this->upperLimit = $this->pageNumber + $this->padding;
				for($i = ($this->pageNumber + 1); $i <= $this->upperLimit; $i++){
					$return .= '<li><a href="?page='.$i.'">'.$i.'</a></li>';
				}
			$return .= "<li><a>...</a></li>";
		}else{
			for($i = $this->pageNumber + 1; $i < $this->numOfPages + 1; $i++){
				$return .= '<li><a href="?page='.$i.'">'.$i.'</a></li>';
			}
		}
		###################################
        
        if($this->pageNumber != $this->numOfPages){
            $return .= '<li><a href="?page='.($this->pageNumber + 1).'">İleri »</a></li>';
        }

        $return .= '</ul>';
        $return .= '</div>';
        
        return $return;
    }
    
    /**
     *
     * admin giriş
     *
     * @access public
     * @param mixed
     * @return int 
     */
    public function admin_login($password)
    {
        $password = md5($password);
        
        return mysql_num_rows(mysql_query("SELECT id FROM settings WHERE admin_pass = '$password'"));
    }
    
    /**
     *
     * ayarları güncellemeye yarar
     *
     * @access public
     * @static
     * @param mixed site adresi: http://www.xxx.com/ziyaretci-defteri
     * @param mixed site başlığı: Ziyaretçi Defterim
     * @param mixed yönetici email: iletisim@xxx.com
     * @param mixed şifre: expenia
     * @return bool 
     */
    public function settings_update($url, $title, $email, $password, $approval)
    {
        $url        = self::clean($url);
        $title      = self::clean($title);
        $email      = self::clean($email);
        $password   = self::clean($password);

        if(empty($password)){
            if(mysql_query("UPDATE settings SET url = '$url', title = '$title', admin_email = '$email', approval = '$approval' WHERE id = '1'")){
                return true;
            }
        }else{
            $password = md5($password);
            if(mysql_query("UPDATE settings SET url = '$url', title = '$title', admin_email = '$email', approval = '$approval', admin_pass = '$password' WHERE id = '1'")){
                return true;
            }
        }
    }
}

?>