PDA

View Full Version : حرفه ای: نصب خودکار بانک و جداول در هاست (حل شد)



reza10wert
یک شنبه 15 بهمن 1391, 22:56 عصر
سلام دوستان
چطور میتونم سایتم را طوری طراحی کنم که خودکار بانک و جداول را بسازه ؟ :متفکر:
ممنون

Unique
دوشنبه 16 بهمن 1391, 00:53 صبح
خیلی کلی پرسیدین ! توی سرور های shared یا vps ؟
من فرض را میگذارم روی shared ، برای ساختن database نیاز به استفاده از cpanel و api های اون دارین والبته باید user و pass مربوط به cpanel را بدونین !
برای ساخت جداول هم خوب با خود sql راحت میشه با create table این کار را انجام داد ! میتونید یک فایل sql که جداول را میسازه و با مقادیر اولیه پر میکنه بسازین و روی database اجراش کنید با mysqli و pdo میشه Multiquery اجرا کرد.

حالا اگه فرض بر این باشه که vps دارین باید یک نام کاربری با دسترسی ایجاد database بسازین توی mysql و اینجوری خود create database هم براتون امکان پذیره.

MMSHFE
دوشنبه 16 بهمن 1391, 00:57 صبح
کار سختی نیست. بعد از ساخت دیتابیس، توی phpMyAdmin یک Export ازش بگیرین و فایل sql. رو باز کنید و فقط دستورات CREATE DATABASE و CREATE TABLE‌ و INSERT INTO رو نگه دارین و بقیه دستورات و کامنتها رو حذف کنید. حالا توی فایل config سایتتون، این کد رو موقع اتصال بنویسید:


<?php
define('HOST', 'localhost');
define('NAME', 'dbname');
define('PASS', '');
define('USER', 'root');

mysql_connect(HOST, USER, PASS) or die('Connection error');
mysql_select_db(NAME);
if(mysql_error() == 'Unknown database \'' . NAME . '\'') {
$query = file_get_contents(NAME . '.sql');
mysql_query($query);
}
mysql_select_db(NAME);
?>

اگه به منطقش دقت کنید، چیز خاصی نداره. البته این کد برای VPS هست و برای Shared Host باید دیتابیس رو بسازین و فقط دستورات CREATE TABLE و INSERT INTO رو توی فایل sql. بگذارین. خطا هم دیگه چیزی شبیه
'Unknown database 'dbname
نیست. بجاش باید یک کوئری مثل SHOW TABLES رو اجرا کنید و بعد با mysql_num_rows ببینید اگه تعداد رکوردهاش صفر بود، یعنی جداول ساخته نشده و بعد، کوئریهای موجود در فایل sql. رو اجرا کنید.
موفق باشید.

ravand
دوشنبه 16 بهمن 1391, 07:29 صبح
ببخشید مهندس این روش امنیتش پایین نیست؟
یعنی فرد نمی تونه مثلا بره به این ادرس و فایل sql رو باز کنه؟
http://site.ir/file.sql

Reza1607
دوشنبه 16 بهمن 1391, 09:58 صبح
مطمئن هستيد كه منظور دوستمون بك ايمپورت و اكسپورت بوده؟ :متفکر:

شما دنبال php script installer بگرديد

اين سايت هم كمكتون مي كنه
http://www.phpsetupwizard.com/
البته من تا الان از هيچ كدوم اينا استفاده نكردم

eshpilen
دوشنبه 16 بهمن 1391, 10:10 صبح
ببخشید مهندس این روش امنیتش پایین نیست؟
یعنی فرد نمی تونه مثلا بره به این ادرس و فایل sql رو باز کنه؟
http://site.ir/file.sql
اگر امنیت برنامه با بدست اومدن ساختار جدول هاش از بین بره یا تا حد قابل توجهی پایین بیاد، معنیش اینه که برنامهء شما اصولی/حرفه ای نیست.
برنامه های بازمتن پس چطور امنیت دارن درحالیکه همهء ساختار و کدشون در دسترسه؟

اونطوری تونستی برنامه بنویسی اونوقت برنامه نویسی!

دوما خب اگر به هر دلیلی بازم نیاز دیدید به پنهان کردن این فایلها، یک فایل htaccess بذارید توی دایرکتوری ذخیرهء فایلهای sql و توش این دستور باشه:

deny from all
بنده همین کار رو کردم. البته برنامهء من بازمتنه و الگوریتم و امنیتش هم بنظرم بقدر کافی حرفه ایه. ولی بازم گفتم حالا بذاریم ضرر که نداره!

استفاده از امنیت از طریق تیرگی بعنوان راهکار اصلی، تقریبا هیچوقت درست نیست، ولی میتونه (بخصوص در مواردی که خودش هزینه و دردسر زیادی نداره) بعنوان مکمل/افزوده/احتیاط استفاده بشه.

reza10wert
دوشنبه 16 بهمن 1391, 10:48 صبح
ممنون آقای شهرکی
دقیقا همین چیز را میخواستم
میخواستم مثل اسکریپت ها که به پوشه نصب می روند و با دادن اطلاعات بانک جداول مورد نیاز را خودش نصب میکنه ، منم بتونم همچین چیزی داشته باشم
خدا خیرت بدهد
از همه دوستان متشکرم

Unique
دوشنبه 16 بهمن 1391, 10:53 صبح
جناب شهرکی مطمئن هستین mysql_query اجازه اجرای multi query را میده ؟ تا جایی که یادمه بیش از یک query را نمیشه باهاش اجرا گرفت.

MMSHFE
دوشنبه 16 بهمن 1391, 22:23 عصر
جناب شهرکی مطمئن هستین mysql_query اجازه اجرای multi query را میده ؟ تا جایی که یادمه بیش از یک query را نمیشه باهاش اجرا گرفت.
کاری نداره که، برحسب ; میایم explode میکنیم و بعد جداگانه اجرا میکنیم.

Unique
سه شنبه 17 بهمن 1391, 00:25 صبح
کاری نداره که، برحسب ; میایم explode میکنیم و بعد جداگانه اجرا میکنیم.
بله میشه ولی سرعتش فکر نکنم مثل multiquery بشه. به هر حال دوستمون متوجه شدن باید چیکار کنند.

MMSHFE
سه شنبه 17 بهمن 1391, 08:28 صبح
خوب اگه واقعاً نیاز به MultiQuery باشه میتونن از MySQLi یا Transaction استفاده کنن. درهرحال منطق کلی کار فرقی نمیکنه.