PDA

View Full Version : سوال: ارور در فایل php



doctor7
جمعه 11 فروردین 1391, 20:18 عصر
من اسکریپت تراوین رو رو هاستم وقتی دارم نصب میکنم از من اول که سرعت سرور و اینها رو میپرسه sql و یوزر و اینهاش رو هم میپرسه بعد مرحله بعد که میخواد چک کنه sql رو این ارور رو میده
Fatal error: Cannot redeclare class MYSQLi_DB in /home/trihan1/public_html/www.trahian.r.gd/install/include/database.php on line 8

این فایل database.php هم در زیر هست ببینید
php.zip - 14.2 Kb (http://uplod.ir/fkr8xt12qpg8/php.zip.htm)

ببخشید زیپ هست چون پسوند فایل .php هست

doctor7
جمعه 11 فروردین 1391, 23:05 عصر
ببخشید با اینکه این کار کار بدیه ولی خب اگه میشه زودتر جواب منو بدید

salehi-ali
جمعه 11 فروردین 1391, 23:26 عصر
شما قبل از نصب IIS رو غیر فعال کنید .

Reza1607
جمعه 11 فروردین 1391, 23:36 عصر
اين خط ها رو غير فعال كنيد


class MYSQL_DB {
var $connection;
function MYSQLi_DB() {
$this->connection = mysqli_connect(SQL_SERVER, SQL_USER, SQL_PASS, SQL_DB) or die(mysqli_error());
}
function query($query) {
return $this->connection->query($query);
}
};

doctor7
شنبه 12 فروردین 1391, 01:07 صبح
اول اینکه iis چیست و چگونه غیر فعال میشه؟؟ بعد اینکه چجوری این خط ها رو غیر فعال کنم؟؟

MMSHFE
شنبه 12 فروردین 1391, 11:20 صبح
دوستان عزیز چرا راهنمایی اشتباه میکنید؟ خطای مربوطه داره میگه که کلاس MYSQLi_DB رو نمیشه دوباره تعریف کرد. چنین خطاهایی وقتی پیش میاد که کلاس رو با include یا require ضمیمه کنید. برای اینکه مشکل تعریف دوباره توابع و... پیش نیاد، فایلهایی که حاوی تعریف کلاس و متد و... هستند رو با include_once یا require_once ضمیمه کنید تا اگه قبلاً ضمیمه شده باشن، دوباره ضمیمه نشن و چنین مشکلاتی پیش نیاد. موفق باشید.

doctor7
شنبه 12 فروردین 1391, 15:21 عصر
یعنی چی ضمیمه کنم>؟؟ ببخشیدا. چجوری ضمیمه کنم؟؟ بعد اینکه این redeclare یعنی چی؟

MMSHFE
شنبه 12 فروردین 1391, 15:41 عصر
ببینید دوست گرامی، توی PHP میتونیم یک فایل رو توی فایل دیگه ضمیمه کنیم و از کدهایی که توی فایل ضمیمه شده نوشته بودیم، استفاده کنیم. مثلاً یک کلاس توی فایل db.php بنویسیم و بعد هرجا خواستیم یک شئ از این کلاس ایجاد کنیم، فایل db.php رو با دستور include یا require به فایل موردنظرمون ضمیمه میکنیم و میتونیم از اون کلاس توی فایل مذکور استفاده کنیم. اگه فایلی که قراره ضمیمه بشه (توی کد شما فایل database.php) حاوی تعریف کلاس یا متد و... باشه، در هر لحظه فقط میشه یکبار اون رو ضمیمه کنیم و اگه دوبار ضمیمه بشه (دوبار توسط دستور include یا require مورد استفاده قرار بگیره)، خطای Redeclare دریافت میکنیم (که میگه اون کلاس یا متد و... دوبار تعریف شده). برای جلوگیری از این مشکل بجای include و require باید موقع ضمیمه کردن، از include_once یا require_once استفاده کنیم که چک میکنه ببینه اگه فایل قبلاً ضمیمه شده باشه، دوباره اون رو ضمیمه نکنه. شما الآن باید ببینید توی چه صفحه ای خطای مربوطه رو دریافت کردین و سورس همون فایل رو ویرایش کنید و دستوری که فایل database.php رو ضمیمه کرده، پیدا کنید و نهایتاً دستور include یا require که اونجا به کار رفته رو به include_once یا require_once تبدیل کنید. موفق باشید.

Reza1607
شنبه 12 فروردین 1391, 15:52 عصر
آقاي شهركي اگه فايلي كه ايشون دادن رو ديده باشين كلاس MYSQL_DB رو دوبار تعريف كردن براي همين من گفتم كه يكي از كلاس ها رو غير فعال كنن
براي غير فعال كردن اول اون كدهايي كه بهتون گفتم رو
*/
بذاريد و در آخر اون ها هم
/*
روقرار بدين

MMSHFE
شنبه 12 فروردین 1391, 16:17 عصر
اتفاقاً فایل رو دیدم ولی اگه به شماره خط مربوط به خطا دقت کنید، میبینید که به اولین تعریف گیر داده نه دومی. بنابراین، خطا مربوط به ضمیمه شدن مجدد کد و تعریف دوباره در اون زمان هست ولی در کل روشی که گفتین درصورت دوبار تعریف شدن، درسته. البته یک نکته برام خیلی جالبه و اون اینکه چنین خطاهای طراحی پیش پا افتاده ای توی Travian هست و خبر نداشتیم؟ موفق باشید.

doctor7
شنبه 12 فروردین 1391, 20:47 عصر
اگر کسی این تراوین رو خواست بهش میدم لینک دانلود رو این اسکریپت travian 4 beta هست

doctor7
شنبه 12 فروردین 1391, 20:58 عصر
ممنون اون مشکل حل شد هر چی include بود رو کردم include_once بعد مرحله بعدی میگه جداول دیتابیس رو بسازه که باید بگیم له مرحله بعد این ارور رو میده

Fatal error: Call to a member function multi_query() on a non-object in /home/trihan1/public_html/www.trahian.r.gd/install/process.php on line 87
اون خطی هم که گفته این هست

$result = $database->connection->multi_query($str);

ببخشید دارم زحمت میدم تازه این بهترین و کامل ترین اسکریپت هست

MMSHFE
شنبه 12 فروردین 1391, 21:37 عصر
Travian 6 رو اگه اشتباه نکنم من دارم. البته الآن بهش دسترسی ندارم و روی سیستم دیگه ای هست. به محض اینکه فرصت کنم، براتون آپلود میکنم و لینکش رو میگذارم. خیلی از این باگهای جزئی توش رفع شده.
-----
ویرایش: از اینجا (http://www.dlscript.com/dl/Travian6.7z%7Bwww.dlscript.com%7D.zip) دانلود کنید.

MMSHFE
شنبه 12 فروردین 1391, 21:39 عصر
B]Fatal error[/B]: Call to a member function multi_query() on a non-object in /home/trihan1/public_html/www.trahian.r.gd/install/process.php on line 87
اون خطی هم که گفته این هست

$result = $database->connection->multi_query($str);

کد رو اینطوری تغییر بدین ببینید درست میشه؟


$result = $database->multi_query($str);

موفق باشید.

doctor7
یک شنبه 13 فروردین 1391, 02:07 صبح
Travian 6 رو اگه اشتباه نکنم من دارم. البته الآن بهش دسترسی ندارم و روی سیستم دیگه ای هست. به محض اینکه فرصت کنم، براتون آپلود میکنم و لینکش رو میگذارم. خیلی از این باگهای جزئی توش رفع شده.
-----
ویرایش: از اینجا (http://www.dlscript.com/dl/Travian6.7z%7Bwww.dlscript.com%7D.zip) دانلود کنید.


این اسکریپت برای ورژن 4 هست؟ یا 3.6 که 5 نژاده هست؟

doctor7
یک شنبه 13 فروردین 1391, 02:10 صبح
کد رو اینطوری تغییر بدین ببینید درست میشه؟


$result = $database->multi_query($str);

موفق باشید.

باز ارور میده




Fatal error: Call to a member function multi_query() on a non-object in /home/trihan1/public_html/www.trahian.r.gd/install/process.php on line 87

doctor7
یک شنبه 13 فروردین 1391, 03:33 صبح
این تراوین اونجوری که توی عکس هاشدیدم ورژن قدیمی و انگیلیسی بود اگه میشه این ارور ها رو بررسی کنیم

MMSHFE
یک شنبه 13 فروردین 1391, 08:58 صبح
فایل process.php رو میشه اینجا بگذارین؟

doctor7
یک شنبه 13 فروردین 1391, 11:09 صبح
این فایل پراکسس
http://uplod.ir/cici0x8u2on7/process.zip.htm

وقتی میزنم ساخت جداول دیتابیس این ارور رو میده
Fatal error: Call to a member function multi_query() on a non-object in /home/trihan1/public_html/www.trahian.r.gd/install/process.php on line 87

MMSHFE
یک شنبه 13 فروردین 1391, 11:47 صبح
میشه کل اسکریپتتون رو آپلود کنید؟ این فایل یک database$ بصورت global تعریف کرده که نشون میده توی فایلی مقداردهی میشه که فایل process.php رو ضمیمه میکنه. درنتیجه مشکل از این فایل نیست، مربوط به فایل فراخواننده هست. باید کل اسکریپت رو بررسی کنم.

doctor7
یک شنبه 13 فروردین 1391, 18:37 عصر
بهتون پیام خصوصی میزنم لینکو میگم

doctor7
دوشنبه 14 فروردین 1391, 18:31 عصر
قربان یادتون رفت؟؟

Tarragon
دوشنبه 14 فروردین 1391, 18:51 عصر
من خودم تو کار اسکریپت های تراوین هستم .
شما این مشکلات رو هر کار کنید نمی تونید کامل رفع کنید من به پشتیبانی هاستم گفتم اون 10تومن گرفت و مشکلات رو واسم درست کرد و از اون موقع به بعد هیچ مشکلی ندارم.
درباره ی اسکریپت هم بگم که این اسکریپت بتا و ورژن 4 هست . از موتور travianX استفاده کرده و همچنین تقریبا دارای باگ نیست.
دارای نقره ، حراجی ، ماجراجویی و قهرمان کامل هست .
اگر کسی اسکریپت رو خواست با من تماس بگیره اینم ایدی منه
asal5545@yahoo.com

doctor7
دوشنبه 14 فروردین 1391, 23:02 عصر
آقای شهرکی لطفا جواب بدید

MMSHFE
دوشنبه 14 فروردین 1391, 23:05 عصر
دوست عزیز، دارم کد رو اصلاح میکنم. قبول کنید حجم اسکریپت زیاده.

doctor7
دوشنبه 14 فروردین 1391, 23:47 عصر
ممنون خیلی خیلی ممنون

doctor7
چهارشنبه 16 فروردین 1391, 17:47 عصر
ببخشید آقای شهرکی اگه میشه این مشکل اسکریپت رو بگید شاید بقیه هم بتونن کمک کنن البته باز هم ببخشیدا

MMSHFE
چهارشنبه 16 فروردین 1391, 22:48 عصر
کلاً اسکریپت خوب نوشته نشده. همه جا از include معمولی استفاده شده که در اسکریپتهایی که تابع یا کلاس تعریف میکنن مشکل ساز میشه. همچنین خیلی جاها متدهای کلاس رو متغیرهایی که اشیاء اون کلاس نیستن صدا زده شده. تعجب میکنم چطور میشه که اینقدر خطاهای پیش پا افتاده توی طراحی این اسکریپت با اینهمه کاربردش وجود داره.

doctor7
پنج شنبه 17 فروردین 1391, 16:45 عصر
یعنی دیگه درست نمیشه؟

MMSHFE
جمعه 18 فروردین 1391, 00:35 صبح
نه که نمیشه، ولی یکم طول میکشه.

doctor7
جمعه 18 فروردین 1391, 00:38 صبح
باشه واقعا آدمی به با مرامی شما ندیدم

aliforever
یک شنبه 22 مرداد 1391, 20:50 عصر
سلام .
آقای شهرکی لطفا اگه تونستید اسکریپت رو درست کنید واسه دانلود بزارید من هم همین مشکلاتی رو که اشون گفتن با این اسکریپت دارم .

vahidb369
چهارشنبه 30 مهر 1393, 14:23 عصر
سلام دوستان بنده هم دقیقا همین مشکل رو دارم
Fatal error: Cannot redeclare class MYSQLi_DB in /home3/bankporo/public_html/20x/install/include/database.php on line 7

برای این مشکل باید چی کار کرد؟

http://20x.bankporoje.ir/install

MMSHFE
پنج شنبه 01 آبان 1393, 09:51 صبح
توی اون خط اینطوری کار کنید:

defined('MYSQLi_DB') or define('MYSQLi_DB', '...');

vahidb369
جمعه 02 آبان 1393, 22:38 عصر
توی اون خط اینطوری کار کنید:

defined('MYSQLi_DB') or define('MYSQLi_DB', '...');

این ارور رو میده :
Parse error: syntax error, unexpected T_VAR in /home3/bankporo/public_html/20x/install/include/database.php on line 8


کد های داخل فایل :

<?php

//set_time_limit(0);
include("connection.php");
include("constant.php");

class MYSQLi_DB {
var $connection;

function MYSQLi_DB() {
$this->connection = mysqli_connect(SQL_SERVER, SQL_USER, SQL_PASS, SQL_DB) or die(mysqli_error());
}
function query($query) {
return $this->connection->query($query);
}
};

class MYSQL_DB {

var $connection;

function MYSQL_DB() {
$this->connection = mysql_connect(SQL_SERVER, SQL_USER, SQL_PASS) or die(mysql_error());
mysql_select_db(SQL_DB, $this->connection) or die(mysql_error());
}

function mysql_exec_batch ($p_query, $p_transaction_safe = true) {
if ($p_transaction_safe) {
$p_query = 'START TRANSACTION;' . $p_query . '; COMMIT;';
};
$query_split = preg_split ("/[;]+/", $p_query);
foreach ($query_split as $command_line) {
$command_line = trim($command_line);
if ($command_line != '') {
$query_result = mysql_query($command_line);
if ($query_result == 0) {
break;
};
};
};
return $query_result;
}

function query($query) {
return mysql_query($query, $this->connection);
}
};

if(DB_TYPE) {
$database = new MYSQLi_DB;
}
else {
$database = new MYSQL_DB;
}
?>

MMSHFE
شنبه 03 آبان 1393, 08:43 صبح
من فکر کردم این یه ثابته. اگه کلاس هست دقت کنید که همه جا فایلش با include_once یا require_once ضمیمه شده باشه.