PDA

View Full Version : ساخت Subdomain و ایمیل با PHP



farazjoonam
سه شنبه 19 تیر 1386, 13:43 عصر
بچه ها کدی هستش که بتونیم تو سایتمون با پر کردن فرمی خودش اتوماتیک Subdomain مثل سایت بلاگفا یا ایمیل بسازه؟؟

ealvandi
سه شنبه 19 تیر 1386, 22:28 عصر
اتفاقا این برای من هم سواله لطفا اگه از دوستان کسی میدونه راهنمایی کنه.

ممنون میشم.

oxygenws
سه شنبه 19 تیر 1386, 22:34 عصر
به طور پیشفرض برای ایجاد زیردامنه باید دسترسی root داشته باشی.

amirhosein
چهارشنبه 20 تیر 1386, 08:08 صبح
به طور پیشفرض برای ایجاد زیردامنه باید دسترسی root داشته باشی.
منظورتون اینه که یه فولدر توی روت برای هر کاربر باید بسازه؟
خب اونی که اسم انتخابی کاربر میاد کنار نام دامین قرار می گیره چه جوریه؟ مثل www.user.domain.com (http://www.user.domain.com) رو میگم.من نشیدم که باید توی تنظیمات DNS یه کارایی انجام بشه.

armin390
چهارشنبه 20 تیر 1386, 11:14 صبح
منظورتون اینه که یه فولدر توی روت برای هر کاربر باید بسازه؟
خب اونی که اسم انتخابی کاربر میاد کنار نام دامین قرار می گیره چه جوریه؟ مثل www.user.domain.com (http://www.user.domain.com/) رو میگم.من نشیدم که باید توی تنظیمات DNS یه کارایی انجام بشه.
نه ربطی نداره!!
حتی اگر subdomain مربوط به وب سایتی تو همون وب سروره لزومی برای اضافه کردن چیزی به DNS نیست! ولی نیاز هست که به وب سرور بفهمونی که چه کار کنه و راه درست این کار نیاز داره:

به طور پیشفرض برای ایجاد زیردامنه باید دسترسی root داشته باشی.

cybercoder
چهارشنبه 20 تیر 1386, 19:03 عصر
بچه ها کدی هستش که بتونیم تو سایتمون با پر کردن فرمی خودش اتوماتیک Subdomain مثل سایت بلاگفا یا ایمیل بسازه؟؟

جهت توضیح بیشتر:
برخی از پرتال ها چنین امکاناتی دارند منتها Subdomain ایجاد نمی کنند بلکه یک نمونه از Site رو به عنوان Sub به طور اتوماتیک می سازند مثل DotNetNuke.

مثلا اگر سازمان بزرگی دارای واحدهای مختلف باشه و بخوایم برای هر واحد یک سایت در پرتال داشته باشیم ( با سطوح دسترسی متفاوت ) این قضیه به درد می خوره. Extension هایی برای Joomble و Mambo هم هست که این کارو می کنه.

موفق باشید.

I,Nobody
چهارشنبه 20 تیر 1386, 19:29 عصر
من فکر می کنم در صورتیکه سرور داشته باشی، بتونی سابدومین ایجاد کنی.
چون شرطی رو که Oxygenws گفت، برقراره.
ضمناً فکر نمی کنم DotNetNuke یه پرتال باشه. یه CMS نسبتاً قویه

jhoseinii
چهارشنبه 20 تیر 1386, 23:30 عصر
نیاز به application خاصی برای اضافه کردن subdomian هست؟ ی اینکار با یه کد ساده php انجام میشه؟ :-؟
اگه اینطوره، میشه راهنمایی کنید؟
farazjoonam، منظورت از "ایمیل با PHP" ایجاد account ایمیله؟ یا ارسال؟

hamed_m
چهارشنبه 20 تیر 1386, 23:45 عصر
در فایل httpd.conf (اگر سرور آپاچی باشه) باید مشخصات ساب دومین رو اضافه کرد:


Listen 80
NameVirtualHost *

<VirtualHost *>
ServerName www.domain.com
DocumentRoot /home/httpd/htdocs/
</VirtualHost>

<VirtualHost *>
ServerName subdomain.domain.com
DocumentRoot /home/httpd/htdocs/subdomain/
</VirtualHost>


میمونه چگونگی دسترسی به فایل (مثلا اگر سرور اختصاصی باشه میشه به یوزر آپاچی دسترسی داد) که با سرور ادمین باید هماهنگ بشه.

houtanal
پنج شنبه 21 تیر 1386, 09:39 صبح
اگر subdomain مربوط به وب سایتی تو همون وب سروره لزومی برای اضافه کردن چیزی به DNS نیست!
فکر می کنم به DNS نیاز باشه.به هر حال DNS بر اساس فایل های مربوط به دامین کار می کنه و میشه برنامه ای نوشت که فایلی با مشخصات sub domain رو بسازه.

oxygenws
پنج شنبه 21 تیر 1386, 10:37 صبح
اصلا نیازی به برنامه نویسی PHP خاصی نداره، کافی است بتونی با PHP شاخه ایجاد کنی!! فقط تنظیمات اولیه اش مهمه که به هر حال دسترسی root می خواد...

(البته توی آپاچی :دی)

armin390
پنج شنبه 21 تیر 1386, 14:44 عصر
فکر می کنم به DNS نیاز باشه.به هر حال DNS بر اساس فایل های مربوط به دامین کار می کنه و میشه برنامه ای نوشت که فایلی با مشخصات sub domain رو بسازه.
حرفتون درسته...
ولی در مورد url rewrite نیازی به اضافه کردن چیزی! به DNS به ازای هر subdomain نیست

amirhosein
شنبه 23 تیر 1386, 11:42 صبح
اصلا نیازی به برنامه نویسی PHP خاصی نداره، کافی است بتونی با PHP شاخه ایجاد کنی!! فقط تنظیمات اولیه اش مهمه که به هر حال دسترسی root می خواد...

(البته توی آپاچی :دی)
این تنظیمات رو باید چه جوری انجام داد؟ دستی یا اتوماتیک؟

oxygenws
شنبه 23 تیر 1386, 11:56 صبح
این تنظیمات رو باید چه جوری انجام داد؟ دستی یا اتوماتیک؟
اگر منظورت رو درست فهمیده باشم، دستی!!

(به هر حال هر عمل دستی ای رو میشه اتوماتیک هم انجام داد و بالعکس!!!)

cybercoder
شنبه 23 تیر 1386, 12:06 عصر
I,NOBODY
ضمناً فکر نمی کنم DotNetNuke یه پرتال باشه. یه CMS نسبتاً قوی

http://www.vbnetexpert.com/LinkClick.aspx?fileticket=2LAQuVbGiy8%3D&tabid=32&mid=407
موفق باشید.

mmehdyt
پنج شنبه 11 مرداد 1386, 09:00 صبح
http://www.vbnetexpert.com/LinkClick.aspx?fileticket=2LAQuVbGiy8%3D&tabid=32&mid=407
موفق باشید.
حالا این چی هست؟
در ضمن می دونستم جستجو هم هست ولی جوابم رو نگرفته بودم!!!!!!!!!!!

Javad583
یک شنبه 14 مرداد 1386, 13:07 عصر
من خودم یه بار همچین کاری رو کردم البته اون سرور لینوکس بود و cPanel هم روش نصب بود هروقت عملیات نصب کامل میشد خودش به محیط cPanel لاگین میکرد و یه آدرس که مقادیر ایجاد SunDomain رو همراه خودش داشت (تحت متد GET) رو اجرا میکرد cPanel هم اون SubDomain رو ایجاد میکرد. نه احتیاجی به داشتن root بود و نه کد نویسی آنچنانی .....

alireza82
یک شنبه 14 مرداد 1386, 15:35 عصر
<?php

// Offer a free subdomain redirect service
//
// First put down your FTP info
//=======================================
// FTP information
//=======================================
$ftp_user_name = "ftp user";
$ftp_user_password = "ftp pass";
$ftp_user_host = "ftp host";
//=======================================
// CPanel information
//=======================================
$CPANELUSERNAME = "cpanel username";
$CPANELPASSWORD = "cpanel password";
// url WITHOUT http://, e.g. I would enterparsmizban.net, NOT http://parsmizban.net
$webURL = "site URL";

if ($create) {
$subdomain = strtolower($subdomain);
$subdomain = eregi_replace(" ", "", $subdomain);
if (file_exists("./$subdomain/index.html")) {
echo "Sorry this domain, $subdomain.$webURL has been taken";
die();
}
// Edit the following http:// url to your CPANEL details where labeled
fopen("http://{$CPANELUSERNAME}:{$CPANELPASSWORD}@{$webURL}:2082/frontend/x/subdomain/doadddomain.html?domain=$subdomain&rootdomain={$webURL}", "r");
print ("Subdomain is being made Please wait 10 seconds while we process your redirect url...!<br>\n");

echo "<META HTTP-EQUIV='refresh' CONTENT='10;
URL=?addurl=$sitelink&sitedomain=$subdomain'>";
}
if ($addurl) {
if (file_exists("./$sitedomain/index.html")) {
echo "Sorry this domain, $sitedomain.$webURL has been taken";
die();
}
// Redirect URL Feature
$conn_id = ftp_connect("$ftp_user_host");
// Open a session to an external ftp site
$login_result = ftp_login ($conn_id, "$ftp_user_name", "$ftp_user_password");
$ftp_file = "./public_html/$sitedomain";
$chmod_cmd="CHMOD 0777 ".$ftp_file;
$chmod=ftp_site($conn_id, $chmod_cmd);
// close the connection
ftp_close($conn_id);

//================================================== ===============//
$quickwrite2=fopen("./$sitedomain/index.html", "a");
fwrite($quickwrite2, "<META HTTP-EQUIV='refresh' CONTENT='2;
URL=$addurl'>" );
fclose($quickwrite2);
//================================================== ==============//
echo "Subdomain adding complete! Your domain is located at <a href=http://$sitedomain".$webURL.">http://$sitedomain.".$webURL."</a>";
}
?>
<form method="post" action="">
Subdomain: <input name="subdomain" type="text"><br>Redirect URL:<input (http://barnamenevis.org/forum/<input) type=text name=sitelink>
<input name="create" type=submit value="Create">
</form>[/left]
__________________

کد بالا از سی پنل سابدومین میسازه و احتیاجی به روت نداره. درسته میشه این کار رو کرد. ولی دوستان منظورشون ایجاد سابدومین به تعداد زیاد هست که استفاده از کد بالا یعنی هزینه زیاد برای هاست و فشار روی سرور.
اما در مورد دادن سابدومین مجازی مثل همینی که تو امضای من هست شما نیاز به دسترسی روت دارید.
اگر کسی میخواد برای دادن سابدومین رایگان از کد بالا استفاده کنه باید بدونه که مدیریت براش سخت میشه چون باید با سی پنل درگیر شه مگر اینکه مدیریت دستی انجام بده که باز هم سخت میشه قضیه .و با توجه به اینکه هر سابدومین یه فولدر و یه صفحه ایندکس داخلی نیاز داره اونوقت هزینه های هاستینگ هم بالا میره. پس اصلا به صرفه نیست
تذکر: کد بالا باید مقداری ویرایش بشه!!!! تا دقیقا همون کاری که میخواید رو بده یه چیزایی هم باید تو httaccess اضافه بشه.
موفق باشید.

farazjoonam
جمعه 02 شهریور 1386, 16:10 عصر
نه آقا این کارا چیه؟ من کدشو دارم

farazjoonam
جمعه 02 شهریور 1386, 16:11 عصر
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Remote Subdomain adding</title>
<style type="text/css">
body {
font:8pt tahoma; background:#f4f4f4;
}
.base {
width:600px; background:#fff; border:1px solid #ddd; padding:5px; text-align:left;
}
input,td {
font:8pt tahoma;
}
.left {
text-align:right; width:50%;
}
.right {
text-align:left; width:50%;
}
a:link, a:visited {
color:red; text-decoration:none;
}
a:hover {
color:darkblue
}
</style>
</head>
<body>
<center><div class=base>
<?php
ini_set("display_errors","Off");
function MKForm() {
$self = $_SERVER["PHP_SELF"];
print "<form action=\"$self\" method=post>\n<input type=hidden name=\"ok\" value=\"true\">
<table width=\"100%\" border=0 >
<tr><td class=left>Subdomain :</td><td class=right><input type=text name=\"subdomain\" size=20></td></tr>
<tr><td class=left>Root Domain :</td><td class=right><input type=text name=\"rootdomain\" size=20></td></tr>
<tr><td class=left>cPanel UserName :</td><td class=right><input type=text name=\"username\" size=20></td></tr>
<tr><td class=left>cPanel Password :</td><td class=right><input type=password name=\"password\" size=20></td></tr>
<tr><td class=left>cPanel Port :</td><td class=right><input type=text name=\"port\" size=20 value=\"2082\"></td></tr>
<tr><td class=left>cPanel Theme :</td><td class=right><input type=text name=\"theme\" size=20 value=\"x\"></td></tr>
<tr><td></td><td class=right><input type=submit value=\"Make Subdomain\"></td></tr>
</table>
</form>";
}
$ok = trim($_POST["ok"]);
if ($ok == "true") {
$subdomain = trim($_POST["subdomain"]);
$rootdomain = trim($_POST["rootdomain"]);
$username = trim($_POST["username"]);
$password = trim($_POST["password"]);
$port = trim($_POST["port"]);
$theme = trim($_POST["theme"]);
// Section 1 //
if (!$subdomain) {
print "Subdomain field is empty, please <a href=\"javascript:history.back(-1)\">BACK</a>!\n";
} else {
$sub = "$subdomain";
$s1 = "T";
}

// Section 2 //
if ($s1 == "T") {
if (!$rootdomain) {
print "Root Domain field is empty, please <a href=\"javascript:history.back(-1)\">BACK</a>!\n";
} else {
$root = "$rootdomain";
$s2 = "T";
}
}
// Section 3 //
if ($s2 == "T") {
if (!$username) {
print "User Name field is empty, please <a href=\"javascript:history.back(-1)\">BACK</a>!\n";
} else {
$user = "$username";
$s3 = "T";
}
}
// Section 4 //
if ($s3 == "T") {
if (!$password) {
print "Password field is empty, please <a href=\"javascript:history.back(-1)\">BACK</a>!\n";
} else {
$pass = "$password";
$s4 = "T";
}
}
// Section 5 //
if ($s4 == "T") {
if (!$port) {
print "Port field is empty, please <a href=\"javascript:history.back(-1)\">BACK</a>!\n";
} else {
$p = "$port";
$s5 = "T";
}
}
// Section 6 //
if ($s5 == "T") {
if (!$theme) {
print "Theme field is empty, please <a href=\"javascript:history.back(-1)\">BACK</a>!\n";
} else {
$the = "$theme";
$total = "T";
}
}

// Section 7 //
if ($total == "T") {
$file = fopen ("http://$user:$pass@$root:$p/frontend/$the/subdomain/doadddomain.html?domain=$sub&rootdomain=$root", "r");
if ($file) {
while (!feof ($file)) {
$line = fgets ($file, 1024);
if (ereg ("already exists", $line, $out)) {
echo("<b>This subdomain already exists !<b>");
}
}
} else {
echo("<b>Error in adding subdomain</b>");
}
fclose($file);
}

} else {
MKForm();
}
?>
</div></center>
</body></html>
<?
$website = "$main";
$username = "$user";
$pass = "$pass";
$cpaneltheme = "$theme";
$cpanelport = "2082";
$rootdomain = "$main";

?>

farazjoonam
جمعه 02 شهریور 1386, 16:12 عصر
بیا انم کدش که قلشو داده بودم

yashaaa
جمعه 16 شهریور 1386, 12:41 عصر
یعنی این واقعا کار می کنه؟
من direct admin دارم رو اون هم کار میکنه ؟؟
منظور از cpaneltheme چی هستش ؟

اگه واقعا کار می کنه که محشره اویل

mmehdyt
جمعه 02 فروردین 1387, 13:39 عصر
من می خوام سابدومین مجانی بدم.
کدوم کد به دردم می خوره؟

vahid4134
جمعه 02 فروردین 1387, 15:02 عصر
من وقتی که این تاپیک رو نگاه کردن هیچ اشاره ای به ماژول mod_rewrite آپاچی نشده بود.
همه وبلاگها که نمیان حقیقتا یک سابدومین درست کنند. بحث cpanel جدای این ازن بحثها هست و اون یک مدیر هاست هست. ولی آیا به نظر شما در سایتهای وبلاگدهی حقیقتا یک سابدومین درست میشه؟ حتی اگر هم دسترسی به root داشته باشند این کار واقعا مزخرف هست چون ممکن است ۵ هزار کاربر داشته باشیم در این حال 5 هزار پوشه داریم و در آن وقت در هر کدام از پوشه ها چه کدی رو باید قرار دهیم؟
برای این کار از سابدومین مجازی استفاده میشه که می تونید داخل این صفحه اطلاعات کلیش رو پیدا کنید
http://www.iranphp.net/index.php?option=com_frontpage&Itemid=1&limit=9&limitstart=9

mmehdyt
دوشنبه 02 اردیبهشت 1387, 09:43 صبح
اصلا نیازی به برنامه نویسی PHP خاصی نداره، کافی است بتونی با PHP شاخه ایجاد کنی!! فقط تنظیمات اولیه اش مهمه که به هر حال دسترسی root می خواد...

(البته توی آپاچی :دی)
منطورتون از شاخه چیه؟ منظورتون فولدر هست؟
کد تنظیمات اولیش چیه؟

oxygenws
دوشنبه 02 اردیبهشت 1387, 16:36 عصر
منطورتون از شاخه چیه؟ منظورتون فولدر هست؟
منظورم شاخه است :) همونی که شما بهش می‌گی پوشه! :)

mmehdyt
دوشنبه 02 اردیبهشت 1387, 22:06 عصر
!! فقط تنظیمات اولیه اش مهمه که به هر حال دسترسی root می خواد...

این تنظیمات چطوریه!