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;
}
}
}
}
?>