PDA

View Full Version : سوال: ساخت بسته ی نصبی از سایت طراحی شده با php و mysql



asma69
جمعه 19 دی 1393, 19:27 عصر
با عرض سلام و خسته نباشین


من می خوام با php و mysql یه مدیریت محتوای کوچیک و عمومی طراحی کنم.اما بلد نیستم چطوری ازش بسته ی نصبی install بسازم.
می خوام جوری باشه که اول فایل نصبی اجراشه و بعد از کاربر مشخصات دیتابیس رو بگیره و خودش خودکار روی هاست نصب کنه.یعنی نیاز به این نباشه که دستی توی سی پنل مشخصات دیتابیس رو تنظیم کنیم.
دقیقا مثل مدیریت محتواها، cms ها ورد پرس، جوملا و نیوک و ... که خودش همه چی رو نصب می کنه.
لازم دارم. ممنون می شم اگه کسی کمکم کنه.
با تشکر

n0o0b_sina
جمعه 19 دی 1393, 21:36 عصر
سلام
این لینک خیلی میتونه کاربری باشه براتون :)
http://calendarscripts.info/user-friendly-script-installation.html

asma69
شنبه 20 دی 1393, 00:12 صبح
سلام
این لینک خیلی میتونه کاربری باشه براتون :)
http://calendarscripts.info/user-friendly-script-installation.html
////////////////////////////////////////////////////////////////////////
خیلی ممنون. تشکر . بررسیش می کنم.

asma69
شنبه 20 دی 1393, 00:35 صبح
سلام
این لینک خیلی میتونه کاربری باشه براتون :)
http://calendarscripts.info/user-friendly-script-installation.html

من لینکی که فرستاده بودین رو بررسی کردم. ممنون از راهنماییتون.
من می خوام جوری باشه که وقتی مدیر سایت نصب رو می زنه به طور خودکار روی هاست لینوکس دیتابیس و یوزر پسورد بر اساس اطلاعاتی که از کاربر می گیره ساخته شه و سپس دیتابیس ساخته شده با یوزرنیم و پسورد ساخته شده متصل شه.
یعنی نیاز نباشه که وارد مدیریت هاست بشیم و دستی دیتابیس و یوزر پسورد بسازیم و متصل کنیم، با اجرای فایل install این کارها
به طور خودکار انجام شه.مثل مدیریت محتواها.
می تونید بیشتر کمکم کنید؟
ممنون.

n0o0b_sina
شنبه 20 دی 1393, 01:15 صبح
خب لینکلی که من دادم یه روش کلی بود، شما توی مرحله ی آخره بعده اینکه اطلاعات مورد نیازتون از جمله اطلاعات دیتابیسی که قراره ساخته بشه رو گرفتید و خواستید اونارو اجرا کنید با یه کده php ساده اول اطلاعات رو توی یه فایل متنی ذخیره کنید بعد وضل شید به mysql (بدون اینکه اطلاعات دیتابیس رو وارد کنید) بعد یه دیتابیس بسازید (توی گوگل create database with php رو جستجو کنید) بعد table های مورد نیاز بعد هورااا :)

MMSHFE
شنبه 20 دی 1393, 08:31 صبح
دوست عزیز، بهتره قید ایجاد خودکار کاربر و دیتابیس رو بزنید و مثل همه CMSهای معروف، شما هم از کاربر بخواین دیتابیس و یوزر رو خودش بسازه و توی فرم نصب وارد کنه چون هاستهای اشتراکی به شما دسترسی CREATE DATABASE رو ازطریق کوئری نمیدن. بعلاوه وقتی به MySQL وصل نشدین، چطور میخواین کوئری اجرا کنید؟ تنها راهی که میتونید این کارها رو انجام بدین اینه که Shell Access داشته باشین و مستقیماً با خط فرمان MySQL توی سرور کار کنید که اون هم توی 99.9٪ هاستهای اشتراکی بسته است. یقیناً اگه راه ساده و مناسبی داشت، CMSهای بزرگی مثل جوملا و دروپال و وردپرس و... ازش استفاده میکردن. موفق باشید.

n0o0b_sina
شنبه 20 دی 1393, 11:40 صبح
سلام

دوست عزیز، بهتره قید ایجاد خودکار کاربر و دیتابیس رو بزنید و مثل همه CMSهای معروف، شما هم از کاربر بخواین دیتابیس و یوزر رو خودش بسازه و توی فرم نصب وارد کنه چون هاستهای اشتراکی به شما دسترسی CREATE DATABASE رو ازطریق کوئری نمیدن.
نمیدونم این cms بزرگ حساب میشه یا نه ولی این سیستم این کارو کرده و هنگام نصب خودش دیتابیس درست میکنه! البته من توی هاست های اشتراکی تست نکردم توی لوکال تست کردم
https://www.pyrocms.com/

بعلاوه وقتی به MySQL وصل نشدین، چطور میخواین کوئری اجرا کنید؟
چرا دیگ وصل میشیم اول اطلاعات رو توی یه فایل متنی مینویسیم و سپس از طریق همون فایل وصل میشیم و table هارو ایجاد میکنیم من خودم این کارو کردم مشکلی نداشتم. ولی به نظره شما بهتره create table هارو توی خوده سیستم بزاریم تا هنگام اجرای سیستم مثلا صفحه اول سایت یا صفحه login جدول ها ساخته بشه یا بعد از اتمام مراحل نصب؟!

MMSHFE
شنبه 20 دی 1393, 11:46 صبح
ببینید توی هاست اشتراکی شما دسترسی به کاربر root ندارین و درنتیجه مجوز CREATE DATABASE به شما داده نمیشه. بقیه کاربران هم مجوز مربوطه رو ندارن و فقط مجوز کار روی دیتابیسی که بهش Bind میشن بهشون داده میشه. بخاطر همینه که میگم قیدش رو بزنید.

asma69
شنبه 20 دی 1393, 12:41 عصر
خب لینکلی که من دادم یه روش کلی بود، شما توی مرحله ی آخره بعده اینکه اطلاعات مورد نیازتون از جمله اطلاعات دیتابیسی که قراره ساخته بشه رو گرفتید و خواستید اونارو اجرا کنید با یه کده php ساده اول اطلاعات رو توی یه فایل متنی ذخیره کنید بعد وضل شید به mysql (بدون اینکه اطلاعات دیتابیس رو وارد کنید) بعد یه دیتابیس بسازید (توی گوگل create database with php رو جستجو کنید) بعد table های مورد نیاز بعد هورااا :)

سلام .ممنون از پاسختون
فکر کنم من درست متوجه نشدم. برای همون خواستم ی سوال دیگه بپرسم.
ببینید فرض کنید من اطلاعات دیتابیس رو از کاربر می گیرم.
با دستور mysql_connect هم به mysql متصل می شم ک تو این دستور باید یوزرنیم و پسورد دیتابیس رو وارد کنم و بعدش دیتابیس هم می سازم.
اما قبل از متصل شدن به دیتابیس من باید یک یوزر داخل هاست بسازم و مشخص کنم که این یوزر به کدوم دیتابیس متصل باشه تا بعد کوئری های من کار کنه و بتونم به mysql متصل شم.
من می خوام این مرحله حالت نصب خودکار داشته باشه و جوری نباشه که کاربر وارد هاست شه و این کارها رو خودش تو هاست انجام بده.
حالا نمی دونم منظورم رو درست بیان کردم یا نه.
ممنون

asma69
شنبه 20 دی 1393, 12:54 عصر
ببینید توی هاست اشتراکی شما دسترسی به کاربر root ندارین و درنتیجه مجوز CREATE DATABASE به شما داده نمیشه. بقیه کاربران هم مجوز مربوطه رو ندارن و فقط مجوز کار روی دیتابیسی که بهش Bind میشن بهشون داده میشه. بخاطر همینه که میگم قیدش رو بزنید.

سلام. ممنون
ولی خوب الان پرستا شاپ اطلاعات دیتابیس رو از کاربر می گیره و خودش خودکار همه ی این کارها رو انجام میده روی هاست.
برای همین من پرسیدم و می گم امکانش هست.

MMSHFE
شنبه 20 دی 1393, 13:05 عصر
ببینید پرستاشاپ روی هاست اشتراکی دیتابیس هم میسازه؟ من ندیدم چنین چیزی. کلاً ساخت دیتابیس در حوزه اختیارات کاربر root هست که بنا به مسائل امنیتی، اجازه دسترسی بهش توی هاست اشتراکی به شما داده نمیشه و باید دیتابیس رو اول بسازین (خالی) و بعد توی نصب همراه با کاربر مربوطه انتخاب کنید تا جداول داخلش ساخته بشه.

alirezaxx
شنبه 20 دی 1393, 13:49 عصر
سلام

نمیدونم این cms بزرگ حساب میشه یا نه ولی این سیستم این کارو کرده و هنگام نصب خودش دیتابیس درست میکنه! البته من توی هاست های اشتراکی تست نکردم توی لوکال تست کردم
https://www.pyrocms.com/

چرا دیگ وصل میشیم اول اطلاعات رو توی یه فایل متنی مینویسیم و سپس از طریق همون فایل وصل میشیم و table هارو ایجاد میکنیم من خودم این کارو کردم مشکلی نداشتم. ولی به نظره شما بهتره create table هارو توی خوده سیستم بزاریم تا هنگام اجرای سیستم مثلا صفحه اول سایت یا صفحه login جدول ها ساخته بشه یا بعد از اتمام مراحل نصب؟!


سلام یعنی امکان داره ؟ ؟

جدی ؟

خب چطوری ؟

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

مرسی برای توضیحات تون


دوست عزیز دیگه مونم ممنون برای اطلاعات و توضیحات تون منم میخاستم ببینم میشه یا نه حالا دانلود و تست میکنم .
ایشالا مشکل دوست مونم حل بشه و کارش راه بیوفته .
مرسی

alirezaxx
شنبه 20 دی 1393, 13:51 عصر
من ندیدم چنین چیزی. کلاً ساخت دیتابیس در حوزه اختیارات کاربر root هست که بنا به مسائل امنیتی، اجازه دسترسی بهش توی هاست اشتراکی به شما داده نمیشه و باید دیتابیس رو اول بسازین (خالی) و بعد توی نصب همراه با کاربر مربوطه انتخاب کنید تا جداول داخلش ساخته بشه.

سلام و تشکر
من نمایندگی هاست دارم موقع ساخت اکانت چه دسترسی باید برای اکانت تعریف کنم تا بتونم از این امکان استفاده کنم ؟





دوست عزیز، بهتره قید ایجاد خودکار کاربر و دیتابیس رو بزنید و مثل همه CMSهای معروف، شما هم از کاربر بخواین دیتابیس و یوزر رو خودش بسازه و توی فرم نصب وارد کنه چون هاستهای اشتراکی به شما دسترسی CREATE DATABASE رو ازطریق کوئری نمیدن. بعلاوه وقتی به MySQL وصل نشدین، چطور میخواین کوئری اجرا کنید؟ تنها راهی که میتونید این کارها رو انجام بدین اینه که Shell Access داشته باشین و مستقیماً با خط فرمان MySQL توی سرور کار کنید که اون هم توی 99.9٪ هاستهای اشتراکی بسته است. یقیناً اگه راه ساده و مناسبی داشت، CMSهای بزرگی مثل جوملا و دروپال و وردپرس و... ازش استفاده میکردن. موفق باشید.

n0o0b_sina
شنبه 20 دی 1393, 14:21 عصر
ببینید پرستاشاپ روی هاست اشتراکی دیتابیس هم میسازه؟ من ندیدم چنین چیزی. کلاً ساخت دیتابیس در حوزه اختیارات کاربر root هست که بنا به مسائل امنیتی، اجازه دسترسی بهش توی هاست اشتراکی به شما داده نمیشه و باید دیتابیس رو اول بسازین (خالی) و بعد توی نصب همراه با کاربر مربوطه انتخاب کنید تا جداول داخلش ساخته بشه.
اون CMS رو که من دادم میسازه :)


سلام .ممنون از پاسختون
فکر کنم من درست متوجه نشدم. برای همون خواستم ی سوال دیگه بپرسم.
ببینید فرض کنید من اطلاعات دیتابیس رو از کاربر می گیرم.
با دستور mysql_connect هم به mysql متصل می شم ک تو این دستور باید یوزرنیم و پسورد دیتابیس رو وارد کنم و بعدش دیتابیس هم می سازم.
اما قبل از متصل شدن به دیتابیس من باید یک یوزر داخل هاست بسازم و مشخص کنم که این یوزر به کدوم دیتابیس متصل باشه تا بعد کوئری های من کار کنه و بتونم به mysql متصل شم.
من می خوام این مرحله حالت نصب خودکار داشته باشه و جوری نباشه که کاربر وارد هاست شه و این کارها رو خودش تو هاست انجام بده.
حالا نمی دونم منظورم رو درست بیان کردم یا نه.
ممنون

خب این نمیشه دیگ :) باید یوزر قبلا ساخته بشه چون برای اتصال نیازه

MMSHFE
شنبه 20 دی 1393, 14:26 عصر
توی هاست اشتراکی هم میسازه؟ اگه اینطور باشه که خیلی کانفیگش داغونه.

asma69
شنبه 20 دی 1393, 14:49 عصر
ببینید پرستاشاپ روی هاست اشتراکی دیتابیس هم میسازه؟ من ندیدم چنین چیزی. کلاً ساخت دیتابیس در حوزه اختیارات کاربر root هست که بنا به مسائل امنیتی، اجازه دسترسی بهش توی هاست اشتراکی به شما داده نمیشه و باید دیتابیس رو اول بسازین (خالی) و بعد توی نصب همراه با کاربر مربوطه انتخاب کنید تا جداول داخلش ساخته بشه.
سلام.
ببخشید اشتباه شده بود.
من منظورم رو درست بیان نکردم.
منظورم این نبود که پرستا شاپ خودش دیتابیس و یوزر می سازه.
من خودم می خوام اینطوری باشه. می خوام اینکاررو انجام بده. به نظرتون چه راهی بهتره.
یعنی می خوام مرحله ی اول نصب این باشه که بر اساس اطلاعاتی که از کاربر می گیره، خودش یوزر رو رو هاست بسازه و بعد دیتابیس رو رو هاست بسازه و متصل کنه به هم و بعد چک کنه که اگه ساخته شده بود و به هم متصل بودن، اونوقت بره مرحله دوم و در این مرحله اطلاعات دیتابیس رو توی فایل کانفیگ ثبت کنه و بعد جدولا رو بسازه و کار نصب تموم شه.
اگه مرحله اول نشه، اون موقع برم سر مساله این که اطلاعات رو توی کانفیگ ثبت کنه و جدولا رو بسازه و مراحل نصب کامل شه مثل همه ی مدیریت محتواهای بزرگ.
بازم ممنون می شم اگه بیشتر راهنماییم کنید.

asma69
شنبه 20 دی 1393, 14:50 عصر
اون CMS رو که من دادم میسازه :)

خب این نمیشه دیگ :) باید یوزر قبلا ساخته بشه چون برای اتصال نیازه

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

n0o0b_sina
شنبه 20 دی 1393, 14:58 عصر
توی هاست اشتراکی هم میسازه؟ اگه اینطور باشه که خیلی کانفیگش داغونه.
نمیدونم اینو، تست نکردم رو هاست

MMSHFE
شنبه 20 دی 1393, 15:22 عصر
حتماً تست کنید ولی بعید میدونم چنین مجوزی داده بشه (اگه سرور درست تنظیم شده باشه).

Mohammadsgh
شنبه 20 دی 1393, 20:01 عصر
ببینید نمیدونم منظور شما چی هست.ولی برای نصب خودکار شما باید باید اطلاعات هاستو ویوزر و اینها رو بدید تا بتونه وصل شه.الان جوملا هم همینجوری نصب میشه.اگه نه که به گفته ی آقای شهرکی باید خیلی کانفیگ داغونی داشته باشه

asma69
یک شنبه 21 دی 1393, 00:14 صبح
ببینید نمیدونم منظور شما چی هست.ولی برای نصب خودکار شما باید باید اطلاعات هاستو ویوزر و اینها رو بدید تا بتونه وصل شه.الان جوملا هم همینجوری نصب میشه.اگه نه که به گفته ی آقای شهرکی باید خیلی کانفیگ داغونی داشته باشه

سلام. خسته نباشین. ممنون از پاسخگوییتون.
خوب حالا اگه بخوام مثل همون جوملا یا مدیریت محتواهای دیگه عمل کنم. یعنی یک بسته ی نصبی برای مدیریت محتوایی که طراحی می کنم بسازم باید چطوری کار کنم؟ مثل همین جوملا یا پرستاشاپ بخوام عمل کنم، می تونید تو کدنویسیش کمکم کنید و بگید چکار کنم.
چطوری فایل install.php رو بسازم؟
شما می تونید کمکم کنید؟
کاربر دیگه ای هست که بتونه تو این زمینه راهنمایی و کمکم کنه تا بتونم کدای قسمت فایل نصب رو بنویسم و فایل نصبی از سایتم ایجاد کنم؟
ممنون می شم اگه راهنماییم کنید.

MMSHFE
یک شنبه 21 دی 1393, 09:19 صبح
ببینید فایل نصب ساختن سخت نیست. کافیه یک Export از دیتابیستون با phpmyadmin بگیرین و توی پوشه install بگذارین و ادیتش کنید و هرچی کامنت و... است حذف کنید تا فقط کوئریهای CREATE TABLE و INSESRT و ALTER و... بمونه. بعدش همونو با اسکریپت نصب بخونید و بصورت کوئری اجرا کنید. درنهایت هم یک فایل تنظیمات با دستوراتی مثل file_put_contents و... بسازین و مقادیری که کاربر توی فرم وارد کرده رو داخلش درج کنید.

فرزند کوروش
یک شنبه 21 دی 1393, 09:23 صبح
البته cpanel وب سرویسی داره که میتونه نه تنها یوزر برای دیتابیس بسازه
میشه ای میل ساخت ، دامنه اد کرد و هرکاری که بصورت عادی بعد از لاگین میشه انجام داد اونم انجام میده!

MMSHFE
یک شنبه 21 دی 1393, 09:33 صبح
cPanel لایسنس گرون قیمتی داره و اکثر هاستهای ایرانی غیرقانونی دارن پنل میدن چون ایران رو تحریم کرده. برای مثال اگه توی یه هاست خارجی سایت بزنید و بدونن یا کسی گزارش بده که ایرانی هستین، cPanel رو بر میدارن یا حتی ممکنه هاستتون رو جمع آوری کنن.

فرزند کوروش
یک شنبه 21 دی 1393, 09:48 صبح
حرف شما درسته اما سی پنل هم به ip ایران خدمات نمیده
اگه ip خارج از ایران باشه معمولا مشکلی بوجود نمیاد.(حداقل فعلا که نیومده)

MMSHFE
یک شنبه 21 دی 1393, 10:03 صبح
بهرحال اسکریپت نصب یک مسئله عمومیه و نباید براش روی استثناها و پنلهای خاص برنامه ریزی کنیم و باید حداقل شرایطی که اسکریپت میتونه به درستی کار کنه رو درنظر بگیریم.

فرزند کوروش
یک شنبه 21 دی 1393, 10:21 صبح
خب تو شرایط پیشرفته تر اگر کاربر بخاد قطعا همچین سرویسی ارائه بده میتونه مثلا زمان نصب از وب سرویس های سی پنل یا دایرکت ادمین که اکثر وب سرورها از همینا استفاده میکنن استفاده کنه
و مثلا یه کمبو باکس باشه که کاربر پنل فعلیش رو انتخاب کنه و بر اساس اون انتخاب از وب سرویس مربوطه استفاده کنه
اما قطعا نمیشه تمام پنلها رو پوشش داد

MMSHFE
یک شنبه 21 دی 1393, 10:24 صبح
هم نمیشه همه رو پوشش داد (API همه با هم فرق میکنه و اینطوری برنامه نصب خودش حجیم تر از پروژه خواهد شد) ! و هم اینکه همه پنلها همه سرویسها رو ندارن و حتی برحسب نوع لایسنس و هزینه ای که پرداخت شده و حتی سطح دسترسی که توسط مدیر سرور تعیین شده، ممکنه یک پنل روی یک هاست سرویس خاصی رو داشته باشه یا فاقد اون سرویس باشه. برای مثال توی برخی هاستهای cPanel گزینه SSH Access رو داره و بعضی دیگه این قابلیت رو ندارن.

hsgpro
یک شنبه 21 دی 1393, 10:32 صبح
هم نمیشه همه رو پوشش داد (API همه با هم فرق میکنه و اینطوری برنامه نصب خودش حجیم تر از پروژه خواهد شد) ! و هم اینکه همه پنلها همه سرویسها رو ندارن و حتی برحسب نوع لایسنس و هزینه ای که پرداخت شده و حتی سطح دسترسی که توسط مدیر سرور تعیین شده، ممکنه یک پنل روی یک هاست سرویس خاصی رو داشته باشه یا فاقد اون سرویس باشه. برای مثال توی برخی هاستهای cPanel گزینه SSH Access رو داره و بعضی دیگه این قابلیت رو ندارن.


اصلاً اینا به کنار برای استفاده از API کنترل پنل ها باید یوزر و رمز هاست کاربر رو داشته باشن یعنی می خوان تو اسکریپت شون یوزر و رمز هاست کاربر رو بگیرن؟ اینطوری هیچ کس به اسکریپتشون اعتماد نمیکنه.

فرزند کوروش
یک شنبه 21 دی 1393, 10:45 صبح
نه خب موقع نصب مثلا به جای گرفتن یوزر پس دیتابیس. یوزر پس هاست رو میگیرن.
اما حرف شما هم درسته بحث دزدیدن پسورد پیش میاد

asma69
یک شنبه 21 دی 1393, 11:03 صبح
ببینید فایل نصب ساختن سخت نیست. کافیه یک Export از دیتابیستون با phpmyadmin بگیرین و توی پوشه install بگذارین و ادیتش کنید و هرچی کامنت و... است حذف کنید تا فقط کوئریهای CREATE TABLE و INSESRT و ALTER و... بمونه. بعدش همونو با اسکریپت نصب بخونید و بصورت کوئری اجرا کنید. درنهایت هم یک فایل تنظیمات با دستوراتی مثل file_put_contents و... بسازین و مقادیری که کاربر توی فرم وارد کرده رو داخلش درج کنید.
سلام.ممنون
آخه من تا حالا فایل نصب نساختم ولی الان نیاز دارم که از سایتم فایل نصب بسازم.
export گرفتن از دیتابیس رو یاد دارم اما این که چه اسکریپتی بنویسم یا چطوری فایل دیتابیس رو فراخوانی کنم یا اصلا تو پوشه ی install چه فایل هایی لازمه رو و کلا کراحلی که برای این کار لازمه انجام بدم رو یاد ندارم.
یا یک مورد دیگه این که مثلا چطوری بگم وقتی طرف ادرس سایتو زد اول پوشه ی install رو به طور پیش فرض باز کنه تا فایل داخل اون اجرا شه.
یعنی کلا اینا برام سواله؟
می تونید بیشتر کمکم کنید؟ مراحل رو نمی دونم. اگه می تونید لطف کنید راهنماییم کنید، من روی هاست امتحان می کنم.
خیلی ممنون. تشکر

alirezaxx
یک شنبه 21 دی 1393, 11:13 صبح
سلام منم سوال دارم و خواننده هستم
ببینین مدیر سایت بره اسکریپت رو بزاره تو هاستش بعد دیگه برای نصب نیازی نباشه که وارد هاست بشیم .
خب اسکریپت تو هاستش هست دیگه دستور ساخت دیتابیس و یوزر و اتصال رو بده بهش نمیشه ؟



برای مثال توی برخی هاستهای cPanel گزینه SSH Access رو داره و بعضی دیگه این قابلیت رو ندارن.







مثلا دسترسی خاص داشته باشه انجام میشه ؟
اره ؟

فرزند کوروش
یک شنبه 21 دی 1393, 11:16 صبح
مثلا دسترسی خاص داشته باشه انجام میشه ؟
ایشون بصورت کلی گفتن
معمولا وب سرویس بر روی سی پنل فعال هست

asma69
دوشنبه 22 دی 1393, 13:08 عصر
سلام. خسته نباشین. ممنون از پاسخگوییتون.
خوب حالا اگه بخوام مثل همون جوملا یا مدیریت محتواهای دیگه عمل کنم. یعنی یک بسته ی نصبی برای مدیریت محتوایی که طراحی می کنم بسازم باید چطوری کار کنم؟ مثل همین جوملا یا پرستاشاپ بخوام عمل کنم، می تونید تو کدنویسیش کمکم کنید و بگید چکار کنم.
چطوری فایل install.php رو بسازم؟
شما می تونید کمکم کنید؟
کاربر دیگه ای هست که بتونه تو این زمینه راهنمایی و کمکم کنه تا بتونم کدای قسمت فایل نصب رو بنویسم و فایل نصبی از سایتم ایجاد کنم؟
ممنون می شم اگه راهنماییم کنید.


سلام.
چی شد، هیچکی نمی تونه کمکم کنه؟
ممنون می شم اگه کسی راهنماییم کنه.

asma69
چهارشنبه 24 دی 1393, 22:51 عصر
سلام.
هیچکی نمی تونه کمکم کنه؟
دیگه نصب دیتابیس و یوزر رو نمی خوام، چون گفته بودین نمی شه.
مثل همون مدیریت محتواهای دیگه اگه بخوام باشه، باید دقیقا چکار کنم؟ چه مراحلی رو طی کنم؟
ممنون اگه کسی راهنماییم کنه.

MMSHFE
پنج شنبه 25 دی 1393, 20:10 عصر
دوست عزیز، شما کافیه Export از دیتابیس رو توی یک فایل ذخیره کنید. من فرض میکنم یک پوشه به اسم install دارین که داخلش یک فایل index.php هست و فایل پشتیبان دیتابیس هم db-backup.sql هست. کافیه شما یه کاری شبیه این انجام بدین:

<!doctype html>
<html>
<head>
<title>Install</title>
<meta charset="utf-8" />
</head>
<body>
<form action="" method="post">
<table>
<tr><th>Host:</th><td><input name="Install[host]" type="text" value="localhost" /></td></tr>
<tr><th>Username:</th><td><input name="Install[username]" type="text" value="root" /></td></tr>
<tr><th>Password:</th><td><input name="Install[password]" type="password" value="" /></td></tr>
<tr><th>Database:</th><td><input name="Install[db]" type="text" value="" /></td></tr>
<tr><th>&nbsp;</th><td><input type="submit" value="Start" /></td></tr>
</table>
</form>
<?php
if(isset($_POST['Install'])) {
$sqli = new MySQLi($_POST['Install']['host'], $_POST['Install']['username'], $_POST['Install']['password'], $_POST['Install']['db']);
if(!$sqli) {
echo '<p style="color:red;">Connection error</p>' . PHP_EOL;
}
else {
$dbBackup = file_get_contents('db-backup.sql');
$sqli->query($dbBackup);
echo '<p style="color:green;">Installation completed. Please remove "install" folder for security reasons.</p>' . PHP_EOL;
}
}
?>
</body>
</html>
توضیح: این اسکریپت در ساده ترین حالت ممکن نوشته شده و خودتون برحسب نیاز باید تکمیلش کنید. ضمناً بعد از نصب باید پوشه Install رو حتماً پاک کنید تا از بروز مشکلات احتمالی جلوگیری بشه.

asma69
پنج شنبه 25 دی 1393, 22:45 عصر
دوست عزیز، شما کافیه Export از دیتابیس رو توی یک فایل ذخیره کنید. من فرض میکنم یک پوشه به اسم install دارین که داخلش یک فایل index.php هست و فایل پشتیبان دیتابیس هم db-backup.sql هست. کافیه شما یه کاری شبیه این انجام بدین:

<!doctype html>
<html>
<head>
<title>Install</title>
<meta charset="utf-8" />
</head>
<body>
<form action="" method="post">
<table>
<tr><th>Host:</th><td><input name="Install[host]" type="text" value="localhost" /></td></tr>
<tr><th>Username:</th><td><input name="Install[username]" type="text" value="root" /></td></tr>
<tr><th>Password:</th><td><input name="Install[password]" type="password" value="" /></td></tr>
<tr><th>Database:</th><td><input name="Install[db]" type="text" value="" /></td></tr>
<tr><th>&nbsp;</th><td><input type="submit" value="Start" /></td></tr>
</table>
</form>
<?php
if(isset($_POST['Install'])) {
$sqli = new MySQLi($_POST['Install']['host'], $_POST['Install']['username'], $_POST['Install']['password'], $_POST['Install']['db']);
if(!$sqli) {
echo '<p style="color:red;">Connection error</p>' . PHP_EOL;
}
else {
$dbBackup = file_get_contents('db-backup.sql');
$sqli->query($dbBackup);
echo '<p style="color:green;">Installation completed. Please remove "install" folder for security reasons.</p>' . PHP_EOL;
}
}
?>
</body>
</html>
توضیح: این اسکریپت در ساده ترین حالت ممکن نوشته شده و خودتون برحسب نیاز باید تکمیلش کنید. ضمناً بعد از نصب باید پوشه Install رو حتماً پاک کنید تا از بروز مشکلات احتمالی جلوگیری بشه.

سلام. مرسی. خیلی ممنون. تشکر
امتحان می کنم .
بازم ممنون و تشکر

asma69
پنج شنبه 25 دی 1393, 23:57 عصر
سلام.
من به طور امتحانی از همین کدی که شما فرستادین استفاده کردم.
فقط اسم فایل دیتابیس رو متناسب با فایل خودم قرار دادم و کامنت ها رو از فایل دیتابیس پاک کردم و یک دیتابیس ساختم و اسکریپت رو اجرا کردم، اون وقت پیغام میده که نصب انجام شده اما وقتی داخل mysql می رم می بینم هیج جدولی به دیتابیس اضافه نشده.
انگار کوئری های فایل دیتابیس رو اجرا نمی کنه.
می تونید راهنماییم کنید؟
ممنون

abolfazl-z
جمعه 26 دی 1393, 17:05 عصر
دوست عزیز، شما کافیه Export از دیتابیس رو توی یک فایل ذخیره کنید. من فرض میکنم یک پوشه به اسم install دارین که داخلش یک فایل index.php هست و فایل پشتیبان دیتابیس هم db-backup.sql هست. کافیه شما یه کاری شبیه این انجام بدین:

<!doctype html>
<html>
<head>
<title>Install</title>
<meta charset="utf-8" />
</head>
<body>
<form action="" method="post">
<table>
<tr><th>Host:</th><td><input name="Install[host]" type="text" value="localhost" /></td></tr>
<tr><th>Username:</th><td><input name="Install[username]" type="text" value="root" /></td></tr>
<tr><th>Password:</th><td><input name="Install[password]" type="password" value="" /></td></tr>
<tr><th>Database:</th><td><input name="Install[db]" type="text" value="" /></td></tr>
<tr><th> </th><td><input type="submit" value="Start" /></td></tr>
</table>
</form>
<?php
if(isset($_POST['Install'])) {
$sqli = new MySQLi($_POST['Install']['host'], $_POST['Install']['username'], $_POST['Install']['password'], $_POST['Install']['db']);
if(!$sqli) {
echo '<p style="color:red;">Connection error</p>' . PHP_EOL;
}
else {
$dbBackup = file_get_contents('db-backup.sql');
$sqli->query($dbBackup);
echo '<p style="color:green;">Installation completed. Please remove "install" folder for security reasons.</p>' . PHP_EOL;
}
}
?>
</body>
</html>
توضیح: این اسکریپت در ساده ترین حالت ممکن نوشته شده و خودتون برحسب نیاز باید تکمیلش کنید. ضمناً بعد از نصب باید پوشه Install رو حتماً پاک کنید تا از بروز مشکلات احتمالی جلوگیری بشه.

آقای شهرکی بجای query نباید از multi_query استفاده کرد ؟

asma69
جمعه 26 دی 1393, 19:20 عصر
آقای شهرکی بجای query نباید از multi_query استفاده کرد ؟
سلام. خسته نباشین. خیلی ممنون
من به جای query از multi_query استفاده کردم و مشکل حل شد و الان جدولا رو نصب می کنه.ممنون و تشکر.
اما یک سوال دیگم داشتم که ممنون می شم اگه راهنماییم کنید.
می خواستم ببینم در زمان نصب ، چطوری محتویات فایل config.php رو تغییر بدم؟
یعنی چطوری این اطلاعات دیتابیس رو که در این جا از کاربر می گیره ، بفرستم به فایل کانفیگ و محتویات فایل کانفیگ که حاوی اطلاعات پیشفرضی از دیتابیس است رو بر اساس این اطلاعات تغییر بدم؟
ممنون می شم اگه راهنماییم کنید.

abolfazl-z
جمعه 26 دی 1393, 20:18 عصر
می تونین یک فایل config.sample.php مانند زیر ایجاد کنید :



define('USERNAME_DB','[db_user]');
define('PASSWORD_DB','[db_pass]');


و این فایل را خوانده و مقادیر معتبر را جایگزین کنید و سپس به عنوان فایلی جدید به نام config.php ذخیره کنید.

asma69
شنبه 27 دی 1393, 14:53 عصر
سلام. خسته نباشین. خیلی ممنون
من به جای query از multi_query استفاده کردم و مشکل حل شد و الان جدولا رو نصب می کنه.ممنون و تشکر.
اما یک سوال دیگم داشتم که ممنون می شم اگه راهنماییم کنید.
می خواستم ببینم در زمان نصب ، چطوری محتویات فایل config.php رو تغییر بدم؟
یعنی چطوری این اطلاعات دیتابیس رو که در این جا از کاربر می گیره ، بفرستم به فایل کانفیگ و محتویات فایل کانفیگ که حاوی اطلاعات پیشفرضی از دیتابیس است رو بر اساس این اطلاعات تغییر بدم؟
ممنون می شم اگه راهنماییم کنید.
سلام. خسته نباشید.ممنونم.
می تونید بیشتر راهنماییم کنید، اخه من با برنامه نویسی شی گرا اشنا نیستم. تازه می خوام برم به سمت شی گرایی.یکم واضح تر می شه برام توضیح بدین؟
ممنون و تشکر

MMSHFE
شنبه 27 دی 1393, 15:00 عصر
میتونید فایل رو با file_get_contents بخونید و محتوا رو بعد از تغییر با file_put_contents ذخیره کنید.

asma69
شنبه 27 دی 1393, 15:00 عصر
می تونین یک فایل config.sample.php مانند زیر ایجاد کنید :



define('USERNAME_DB','[db_user]');
define('PASSWORD_DB','[db_pass]');
و این فایل را خوانده و مقادیر معتبر را جایگزین کنید و سپس به عنوان فایلی جدید به نام config.php ذخیره کنید.

راستش یعنی در واقع زیاد از این کدای بالا متوجه نشدم. که باید کجا بزارم و چطوری استفاده کنم ازشون.
ممنون می شم اگه یک برام توضیح بدین. تشکر

asma69
شنبه 27 دی 1393, 15:03 عصر
میتونید فایل رو با file_get_contents بخونید و محتوا رو بعد از تغییر با file_put_contents ذخیره کنید.
سلام. ازتون ممنونم بابت اون کدای قبلی.
راستش مشکلم اینه که چطوری ازشون استفاده کنم.
اخه تا حالا از این دو موردی که بالا گفتین استفاده نکردم.

asma69
شنبه 27 دی 1393, 15:04 عصر
میشه بیشتر راهنماییم کنید؟
ممنون

asma69
شنبه 27 دی 1393, 15:05 عصر
منظورم اینه که چطوری محتوا رو تغییر بدم؟ یا چطوری مقادیری که از کاربر گرفتم رو بفرستم به کانفیگ؟

MMSHFE
شنبه 27 دی 1393, 15:24 عصر
فرض کنید توی تنظیمات چنین کدی دارین:

defined('DB_HOST') or define('DB_HOST', 'localhost');
defined('DB_NAME') or define('DB_NAME', 'database');
defined('DB_USER') or define('DB_USER', 'root');
defined('DB_PASS') or define('DB_PASS', '');
حالا این کد رو ببینید:

if(isset($_POST['host'], $_POST['name'], $_POST['user'], $_POST['pass'])) {
$config = file_get_contents('config.php');
foreach($_POST as $name => $value) {
$config = preg_replace("#defined\('DB_({$name})'\) or define\('DB_({$name})', '(.*?)'\);#i", "defined('DB_$1') or define('DB_$2', '{$value}')");
}
file_put_contents('config.php', $config);
}
البته تستش نکردم ولی باید کار کنه و مشکل خاصی بنظرم نمیاد داشته باشه.

asma69
شنبه 27 دی 1393, 15:28 عصر
فرض کنید توی تنظیمات چنین کدی دارین:

defined('DB_HOST') or define('DB_HOST', 'localhost');
defined('DB_NAME') or define('DB_NAME', 'database');
defined('DB_USER') or define('DB_USER', 'root');
defined('DB_PASS') or define('DB_PASS', '');
حالا این کد رو ببینید:

if(isset($_POST['host'], $_POST['name'], $_POST['user'], $_POST['pass'])) {
$config = file_get_contents('config.php');
foreach($_POST as $name => $value) {
$config = preg_replace("#defined\('DB_({$name})'\) or define\('DB_({$name})', '(.*?)'\);#i", "defined('DB_$1') or define('DB_$2', '{$value}')");
}
file_put_contents('config.php', $config);
}
البته تستش نکردم ولی باید کار کنه و مشکل خاصی بنظرم نمیاد داشته باشه.
مرسی. تشکر.
من تستش می کنم ببینم چی جواب می ده.
بازم ممنون. مرسی

asma69
شنبه 27 دی 1393, 15:56 عصر
فرض کنید توی تنظیمات چنین کدی دارین:

defined('DB_HOST') or define('DB_HOST', 'localhost');
defined('DB_NAME') or define('DB_NAME', 'database');
defined('DB_USER') or define('DB_USER', 'root');
defined('DB_PASS') or define('DB_PASS', '');
حالا این کد رو ببینید:

if(isset($_POST['host'], $_POST['name'], $_POST['user'], $_POST['pass'])) {
$config = file_get_contents('config.php');
foreach($_POST as $name => $value) {
$config = preg_replace("#defined\('DB_({$name})'\) or define\('DB_({$name})', '(.*?)'\);#i", "defined('DB_$1') or define('DB_$2', '{$value}')");
}
file_put_contents('config.php', $config);
}
البته تستش نکردم ولی باید کار کنه و مشکل خاصی بنظرم نمیاد داشته باشه.

سلام.
من این کد رو توی فایل کانفیگم گزاشتم.
defined('DB_HOST') or define('DB_HOST', 'localhost');
defined('DB_NAME') or define('DB_NAME', 'database');
defined('DB_USER') or define('DB_USER', 'root');
defined('DB_PASS') or define('DB_PASS', '');
بعد توی صفحه ی دیگمم کد زیر رو گزاشتم.
<!doctype html>
<html>
<head>
<title>Install</title>
<meta charset="utf-8" />
</head>
<body>
<form action="" method="post">
<table>
<tr><th>Host:</th><td><input name="host" type="text" value="localhost" /></td></tr>
<tr><th>Username:</th><td><input name="user" type="text" value="root" /></td></tr>
<tr><th>Password:</th><td><input name="pass" type="password" value="" /></td></tr>
<tr><th>Database Name:</th><td><input name="name" type="text" value="" /></td></tr>
<tr><th>&nbsp;</th><td><input type="submit" value="Start" /></td></tr>
</table>
</form>
<?php
if(isset($_POST['host'], $_POST['name'], $_POST['user'], $_POST['pass'])) {
$config = file_get_contents('config.php');
foreach($_POST as $name => $value) {
$config = preg_replace("#defined\('DB_({$name})'\) or define\('DB_({$name})', '(.*?)'\);#i", "defined('DB_$1') or define('DB_$2', '{$value}')");
}
file_put_contents('config.php', $config);
}
?>
</body>
</html>
وقتی برنامه رو اجرا کردم و اطلاعات رو وارد و ثبت کردم. با خطای زیر مواجه شدم و کل محتویات فایل کانفیگم هم پاک شد.




( ! ) Warning: preg_replace() expects at least 3 parameters, 2 given in C:\wamp\www\install\in.php on line 21


Call Stack


#
Time
Memory
Function
Location


1
0.0073
370816
{main}( )
..\in.php:0


2
0.0092
371960
preg_replace (http://www.php.net/preg_replace) ( )
..\in.php:21







می دونید برای چی؟
می تونید بیشتر راهنماییم کنید.
خیلی ممنون

asma69
شنبه 27 دی 1393, 16:10 عصر
راستش معنی این خط رو نفهمیدم.
$config = preg_replace("#defined\('DB_({$name})'\) or define\('DB_({$name})', '(.*?)'\);#i", "defined('DB_$1') or define('DB_$2', '{$value}')");
خطای بالا هم از همین خط بود. لاین 21 تو برنامم، همین خطه.
به نظرتون مشکل چیه.
می تونید بیشتر برام توضیح بدین؟
ممنون

asma69
شنبه 27 دی 1393, 21:51 عصر
راستش معنی این خط رو نفهمیدم.
$config = preg_replace("#defined\('DB_({$name})'\) or define\('DB_({$name})', '(.*?)'\);#i", "defined('DB_$1') or define('DB_$2', '{$value}')");
خطای بالا هم از همین خط بود. لاین 21 تو برنامم، همین خطه.
به نظرتون مشکل چیه.
می تونید بیشتر برام توضیح بدین؟
ممنون
سلام. من بازم چک کردم، ولی همون خطا رو نشون می ده هنوز. می تونید راهنماییم کنید؟
ممنون

asma69
یک شنبه 28 دی 1393, 09:24 صبح
سلام.
هرکی می تونه کمکم کنه تا بدونم خطا از چیه؟
به جای تغییر محتویات، کل محتویاتو پاک می کنه.
ممنون

asma69
یک شنبه 28 دی 1393, 15:10 عصر
فرض کنید توی تنظیمات چنین کدی دارین:

defined('DB_HOST') or define('DB_HOST', 'localhost');
defined('DB_NAME') or define('DB_NAME', 'database');
defined('DB_USER') or define('DB_USER', 'root');
defined('DB_PASS') or define('DB_PASS', '');
حالا این کد رو ببینید:

if(isset($_POST['host'], $_POST['name'], $_POST['user'], $_POST['pass'])) {
$config = file_get_contents('config.php');
foreach($_POST as $name => $value) {
$config = preg_replace("#defined\('DB_({$name})'\) or define\('DB_({$name})', '(.*?)'\);#i", "defined('DB_$1') or define('DB_$2', '{$value}')");
}
file_put_contents('config.php', $config);
}
البته تستش نکردم ولی باید کار کنه و مشکل خاصی بنظرم نمیاد داشته باشه.
سلام
چرا واسه این کد خطا می ده؟
خطاشو تو پستای بالایی اوردم...
لطفا کمکم کنید..
ممنون

asma69
یک شنبه 28 دی 1393, 21:09 عصر
لطفا کمکم کنید، خیلی لازم دارم.
ممنون

asma69
یک شنبه 28 دی 1393, 22:48 عصر
سلام
خطا رو فهمیدم از چیه و برطرفش کردم. اما حالا ی مشکل دیگه هست؟؟؟
خطا رو با گزاشتن$config در اخر تابع preg_replace برطرف کردم.

preg_replace("#defined\('DB_({$name})'\) or define\('DB_({$name})', '(.*?)'\);#i", "defined('DB_$1') or define('DB_$2', '{$value}')",$config);
تغییرات رو اعمال می کنه ولی سیمی کالن پایان دستورات رو نمی زاره.
مثل زیر:

defined('DB_HOST') or define('DB_HOST', 'localhost')
defined('DB_NAME') or define('DB_NAME', 'database')
defined('DB_USER') or define('DB_USER', 'root')
defined('DB_PASS') or define('DB_PASS', '')
می تونید واسه این مورد کمکم کنید؟
یکی میخواستم واسه این مورد کمکم کنید یکی هم این که اگه تنظیمات کانفیگم به شکل زیر باشه،

private $name_host='localhost';
private $user='root';
private $password='';
private $database_name='';
اونوقت تو تابع preg_replace برای تغییر مقادیر مورد نظر چی باید بنویسم؟
ممنون و تشکر.

MMSHFE
دوشنبه 29 دی 1393, 15:25 عصر
توی پارامتر دوم preg_replace آخر رشته، کارکتر ; رو اضافه کنید. درمورد سؤال دوم هم از این کد استفاده کنید:

foreach(array('name_host', 'user', 'password', 'database_name') as $name) {
if(isset($_POST[$name])) {
$config = preg_replace("#private\s+[$]{$name}='(.*?)';#i", "private \${$name}='{$_POST[$name]}';",$config);
}
}

asma69
دوشنبه 29 دی 1393, 21:37 عصر
توی پارامتر دوم preg_replace آخر رشته، کارکتر ; رو اضافه کنید. درمورد سؤال دوم هم از این کد استفاده کنید:

foreach(array('name_host', 'user', 'password', 'database_name') as $name) {
if(isset($_POST[$name])) {
$config = preg_replace("#private\s+[$]{$name}='(.*?)';#i", "private \${$name}='{$_POST[$name]}';",$config);
}
}

سلام. خسته نباشین .
من واقعا ممنونم. مرسی از پاسخهای خوبتون. خیلی کمک کرد.
قبل این که پاسخ شما رو ببینم کدهامو به شکل زیر تغییر دادم و مشکلم برطرف شد.
اما به یه مشکل دیگه برخورد کردم که تو پست بعدی توضیح می دم.
ممنون




<?php
if(isset($_POST['Install'])) {
$sqli = new MySQLi($_POST['Install']['host'], $_POST['Install']['username'], $_POST['Install']['password'], $_POST['Install']['db']);
if(!$sqli) {
echo '<p style="color:red;">Connection error</p>' . PHP_EOL;
}
else {
$dbBackup = file_get_contents('banks.sql');
$sqli->multi_query($dbBackup);
echo '<p style="color:green;">مرحله نصب جداول با موفقیت انجام گردید. </p>' . PHP_EOL;
}
$host=$_POST['Install']['host'];
$name=$_POST['Install']['db'];
$user=$_POST['Install']['username'];
$pass=$_POST['Install']['password'];
$config = file_get_contents('config.php');
$a= array("DB_Local","DB_Root","DB_Pass","DB_Name");
$b = array("$host","$user","$pass","$name");
$con=str_replace($a,$b,$config);
file_put_contents('configoration.php', $con);
echo '<p style="color:green;">تنظیمات فایل کانفیگ با موفقیت انجام شد </p>';
}
?>



مشکل با این تغییر حل شد.

asma69
دوشنبه 29 دی 1393, 22:32 عصر
در ادامه پست قبلیم توضیح می دم که :
راستش من به تازگی با برنامه نویسی شی گرا آشنا شدم و تو این سایت و تو پست های دیگه مطالب خوبی راجبش پیدا کردم و یه مقدمه ای از برنامه نویسی شی گرا رو درک کردم.
با توجه به اموزش هایی که تو همین سایت پیدا کردم، اومدم برنامم رو تبدیل به یه برنامه شی گرا کردم اما نمی دونم تا چه حدش درسته و تو این تبدیلات به ی مشکل هم برخورد کردم که در ادامه توضیح می دم.
کدهام به شکل زیره که بیشترش همون کدایی که خودتون برام فرستادین فقط با تغییرات جزعی.




<!doctype html>
<html>
<head>
<title>Install</title>
<meta charset="utf-8" />
</head>
<body>
<form action="" method="post">
<table>
<tr><th>Host:</th><td><input name="Install[host]" type="text" value="localhost" /></td></tr>
<tr><th>Username:</th><td><input name="Install[username]" type="text" value="root" /></td></tr>
<tr><th>Password:</th><td><input name="Install[password]" type="password" value="" /></td></tr>
<tr><th>Database Name:</th><td><input name="Install[db]" type="text" value="" /></td></tr>
<tr><th>&nbsp;</th><td><input type="submit" value="Start" /></td></tr>
</table>
</form>


<?php
if(isset($_POST['Install'])) {
$sqli = new MySQLi($_POST['Install']['host'], $_POST['Install']['username'], $_POST['Install']['password'], $_POST['Install']['db']);
if(!$sqli) {
echo '<p style="color:red;">Connection error</p>' . PHP_EOL;
}
else {
$dbBackup = file_get_contents('banks.sql');
$sqli->multi_query($dbBackup);
echo '<p style="color:green;">مرحله نصب جداول با موفقیت انجام گردید. </p>' . PHP_EOL;
}
$host=$_POST['Install']['host'];
$name=$_POST['Install']['db'];
$user=$_POST['Install']['username'];
$pass=$_POST['Install']['password'];
$config = file_get_contents('config.php');
$a= array("DB_Local","DB_Root","DB_Pass","DB_Name");
$b = array("$host","$user","$pass","$name");
$con=str_replace($a,$b,$config);
file_put_contents('configoration.php', $con);
echo '<p style="color:green;">تنظیمات فایل کانفیگ با موفقیت انجام شد </p>';
}
?>


</body>
</html>


************************************************** *
من واسه شی گرا کردن کدام، اومدم کدها رو مثل آموزش های توی سایت، به شکل زیر تغییر دادم.
************************************************** ***********



<html>
<head>
<title>Install</title>
<meta charset="utf-8" />
</head>
<body>
<form action="" method="post">
<table>
<tr><th>Host:</th><td><input name="Install[host]" type="text" value="localhost" /></td></tr>
<tr><th>Username:</th><td><input name="Install[username]" type="text" value="root" /></td></tr>
<tr><th>Password:</th><td><input name="Install[password]" type="password" value="" /></td></tr>
<tr><th>Database Name:</th><td><input name="Install[db]" type="text" value="" /></td></tr>
<tr><th>&nbsp;</th><td><input type="submit" value="Start" /></td></tr>
</table>
</form>


<?php
class InstallationWeb
{
private $host='localhost';
private $name='';
private $user='root';
private $pass='';
protected $connection='';
private $db='';
private $config='';
private $temp='';
private $replace='';
private $run='';

public function __construct()
{
$this->connection = new MySQLi($this->host,$this->user,$this->pass,$this->name);
if(!$this->connection)
{
echo "no connection";
}
else
{
$result=$this->connection;
$this->db = file_get_contents('banks.sql');
$result->multi_query($this->db);
echo '<p style="color:green;">مرحله نصب جداول با موفقیت انجام گردید. </p>';
}
}

public function SetConfig()
{
$this->config= file_get_contents('config.php');
$this->temp= array("DB_Local","DB_Root","DB_Pass","DB_Name");
$this->replace= array("$this->host","$this->user","$this->pass","$this->name");
$this->run=str_replace($this->temp,$this->replace,$this->config);
file_put_contents('configoration.php', $this->run);
echo '<p style="color:green;">تنظیمات فایل کانفیگ با موفقیت انجام شد </p>';
}
}
$Install=new InstallationWeb();
$Install->SetConfig();
?>


</body>
</html>



مشکلی تو اجرای کدها نیست و درست جدول ها رو نصب می کنه و محتویات فایل کانفیگ رو هم تغییر می ده.
1- سوال اولم اینه که ایا شیوه ی تبدیلم به برنامه نویسی شی گرا صحیح است؟ برای شروع کار خوب است؟
2- سوال دومم مربوط به چند خط اول برنامس که در زیر اوردم:




private $host='localhost';
private $name='';
private $user='root';
private $pass='';


در واقع نمی دونم که چطوری ، مقادیر textbox ها رو به این متغیرها نسبت بدم؟
در حالت عادی که مقادیر رو به طور دستی وارد کردم، مشکلی نیست، اما انگار مقادیر تکست باکس ها رو نمی تونه بخونه. وقتی مقادیر تکست باکس ها رو بهش نسبت می دم، خطا داره و دیگه کدام کار نمی کنه.
من مقادیر تکست باکس ها رو به شکل زیر بهشون نسبت دادم.



private $host='$_POST["Install"]["host"]';
private $name='$_POST["Install"]["db"]';
private $user='$_POST["Install"]["username"]';
private $pass='$_POST["Install"]["password"]';


اما اینطور که معلومه، این نحوه ی معرفی و نسبت دادن رو نمی تونه بشناسه.
می دونید مشکل از چیه؟
می تونید کمکم کنید؟
ممنون می شم ازتون.

asma69
سه شنبه 30 دی 1393, 18:49 عصر
سلام. خسته نباشین.
اگه میشه کمکم کنید ، موندم واسه این قسمت. تو دوتا پست قبلیم توضیح دادم. پست های 59 و 58
چون تو قسمت های دیگه هم به این فراخونی با $post , $request نیاز دارم.
لطفا راهنماییم کنید .
ممنون و تشکر

asma69
پنج شنبه 02 بهمن 1393, 23:01 عصر
سلام
لطفا راهنماییم کنید.
ممنون

MMSHFE
جمعه 03 بهمن 1393, 18:34 عصر
دوست عزیز وقتی متغیرها رو توی کوتیشن تک میگذارین پردازش نمیشن. باید خارج از کوتیشن بنویسید. ضمناً باید مقدار کادر متن رو اونجا بنویسین نه خود شناسه رو. مثلاً بجای $_POST['username'] اونجا باید متنی که کاربر وارد کرده رو بنویسید (مثلاً root)

asma69
جمعه 03 بهمن 1393, 19:47 عصر
دوست عزیز وقتی متغیرها رو توی کوتیشن تک میگذارین پردازش نمیشن. باید خارج از کوتیشن بنویسید. ضمناً باید مقدار کادر متن رو اونجا بنویسین نه خود شناسه رو. مثلاً بجای $_POST['username'] اونجا باید متنی که کاربر وارد کرده رو بنویسید (مثلاً root)
سلام. خسته نباشین.ممنون
خوب من می خوام مقدار رو از صفحه ی قبل دریافت کنم، برای همین نمی تونم مستقیم مقداردهی کنم. برای همون نمی دونم باید چکار کنم؟
هر مقداری که کاربر وارد کنه می خوام باشه.

MMSHFE
جمعه 03 بهمن 1393, 19:55 عصر
شما موقع نصب یکبار از کاربر اطلاعات رو میگیرن و توی متغیر دارین. باید توی کوتیشن مقدار متغیر رو بنویسید. نمونه کدی که بهتون دادم رو نگاه کنید و بهش دقت کنید. دفعات بعد دیگه نصب اجرا نمیشه و فایل تنظیمات باید بصورت متن خام نوشته شده باشه. شما که نمیخواین هردفعه موقع کار اطلاعات دیتابیس رو از کاربر بگیرین.

asma69
جمعه 03 بهمن 1393, 20:17 عصر
سلام.
حرف شما درست ولی این همون صفحه نصب اولیم هست که می خوام از صفحه قبل اطلاعات رو بگیرم و جایگزین کنم و بعدم عملیات نصب شروع شه.برای این میگم.
اگه پست 59 رو ببینید، متوجه منظورم می شین.
ممنون

asma69
جمعه 03 بهمن 1393, 20:20 عصر
یا کلا واسه قسمتای دیگه پروژم که می خوام از صفحه قبلم مقدار تکست باکس ها رو بگیرم و تو متغیر بریزم باید چکار کنم اگه بخوام با شی گرایی اطلاعات رو ثبت کنم؟

MMSHFE
شنبه 04 بهمن 1393, 10:58 صبح
ببینید توی نمونه کدی که گذاشتم من هم اطلاعات رو از POST_$ گرفتم و توی فایل تنظیمات نوشتم. برای شئ گرایی هم که دوستمون گفتن (البته بهتره برای رعایت استانداردهای امنیتی فیلدها رو private بگذارین و با کمک دستیابها و یا متدهای Setter/Getter بهشون مقدار بدین).

asma69
شنبه 04 بهمن 1393, 12:27 عصر
سلام.
تشکر ممنون. امتحان می کنم.