PDA

View Full Version : مشکل در css و سوکت بعد از استفاده از htaccess



imohammad
شنبه 21 اردیبهشت 1392, 06:43 صبح
سلام دوستان
من یه اسکریپت whois نوشتم به این آدرس (http://codesign.ir)
همه چیز خوب کار میکنه ولی وقتی خواستم url رو با کمک htaccess کوتاه کنم دیگه هیچ کدوم از فایلهای css لود نشد و کلا سوکت کار نکرد
اینم کد htaccess

RewriteEngine On
RewriteRule ^(.*)$ index.php?domain=$1 [QSA]
کد پروژه رو هم اگه لازم باشه قرار میدم.

qartalonline
شنبه 21 اردیبهشت 1392, 08:03 صبح
مسیر فایلها رو بصورت "مطلق" وارد کنید نه "نسبی".

مثل:

http://site.com/file/css/style.css

MMSHFE
شنبه 21 اردیبهشت 1392, 08:54 صبح
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(css|pdf|gif|ico|jpg|js|png|swf|pdf|txt|php)$
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

imohammad
شنبه 21 اردیبهشت 1392, 12:04 عصر
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(css|pdf|gif|ico|jpg|js|png|swf|pdf|txt|php)$
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

ممنون دوست عزیز
کدتون به درستی جواب داد
فقط یه نکته دیگه می‌مونه:
وقتی کلید Submit رو میزنم url به همون صورت ?domain=example.com میشه
راهی هست که خودکار به صورت /example.com در بیاد؟

MMSHFE
شنبه 21 اردیبهشت 1392, 12:21 عصر
برای لینکها باید دستی انجام بدین. برای فرم هم یا باید با روش POST کار کنید، یا اینکه اگه میخواین به روش GET ارسال بشه، از کدی شبیه زیر توی صفحه مقصد فرم استفاده کنید:


if(strpos($_SERVER['REQUEST_URI'], '?') !== false) {
header('Location: http://localhost/htaccess/' . implode('/', array_values($_GET)));
exit();
}

و بجای http://localhost/htaccess آدرس صفحه مقصد فرم رو بگذارین.

imohammad
شنبه 21 اردیبهشت 1392, 18:22 عصر
برای لینکها باید دستی انجام بدین. برای فرم هم یا باید با روش POST کار کنید، یا اینکه اگه میخواین به روش GET ارسال بشه، از کدی شبیه زیر توی صفحه مقصد فرم استفاده کنید:


if(strpos($_SERVER['REQUEST_URI'], '?') !== false) {
header('Location: http://localhost/htaccess/' . implode('/', array_values($_GET)));
exit();
}

و بجای http://localhost/htaccess آدرس صفحه مقصد فرم رو بگذارین.
روی لوکال درست جواب میده و مشکلی نیست
اما روی هاست آدرس به این صورت در میاد

http://codesign.ir/whois/?domain=codesign.ir
و ارور زیر رو بر میگردونه

Warning: Cannot modify header information - headers already sent by (output started at /home/codesign/public_html/whois/index.php:16) in /home/codesign/public_html/whois/index.php on line 18

MMSHFE
شنبه 21 اردیبهشت 1392, 20:59 عصر
خطای مربوطه بخاطر اینه که فایل رو با کدگذاری UTF-8 without BOM ذخیره نکردین. اطلاعات بیشتر رو توی تاپیک پرسشهای تکراری (http://barnamenevis.org/showthread.php?356992-%D9%BE%D8%B1%D8%B3%D8%B4%D9%87%D8%A7%DB%8C-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C) در قسمت خطای مربوط به header پیدا کنید.

imohammad
یک شنبه 22 اردیبهشت 1392, 06:30 صبح
خطای مربوطه بخاطر اینه که فایل رو با کدگذاری UTF-8 without BOM ذخیره نکردین. اطلاعات بیشتر رو توی تاپیک پرسشهای تکراری (http://barnamenevis.org/showthread.php?356992-%D9%BE%D8%B1%D8%B3%D8%B4%D9%87%D8%A7%DB%8C-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C) در قسمت خطای مربوط به header پیدا کنید.
ممنون از راهنماییتون، ولی شما یه نگاه به آدرس بندازین، مشکل با روشتون حل نشد

MMSHFE
یک شنبه 22 اردیبهشت 1392, 08:34 صبح
دوست گرامی، تمام فایلهایی که حتی ضمیمه کردین هم باید با کدگذاری UTF-8 without BOM ذخیره بشن.

imohammad
سه شنبه 24 اردیبهشت 1392, 07:13 صبح
دوست گرامی، تمام فایلهایی که حتی ضمیمه کردین هم باید با کدگذاری UTF-8 without BOM ذخیره بشن.
دقیقا همون کارو کردم ولی اگه دقت کنید روی سرور به آدرس ?domain= هم اضافه میشه، درصورتی که اگه به صورت دستی ?domain= رو پاک کنم اسکریپت بدون مشکل کارش رو انجام میده
روی لوکال هم هیچ مشکلی ندارم

MMSHFE
سه شنبه 24 اردیبهشت 1392, 07:57 صبح
کد فرمتون رو بگذارین.

imohammad
سه شنبه 24 اردیبهشت 1392, 09:15 صبح
این کد برای index.php

<!DOCTYPE html>
<html lang="fa">
<head>
<title>چک کردن وضعیت نام دامنه - Domain Lookup Service</title>
<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="css/bootstrap.css" rel="stylesheet" media="screen">
<link href="css/style.css" rel="stylesheet" media="screen">
<script src="js/jquery-latest.js"></script>
<script src="js/bootstrap.min.js"></script>
<link rel="search" href="http://codesign.ir/whois/lookup.xml" type="application/opensearchdescription+xml" title="Codesign Whois"/>
<meta name="description" content="ابزاری جهت اطمینان از اینکه دامنه جهت ثبت آزاد باشد. پشتیبانی از دامنه‌های .com .org .net .ir .af" />
<meta name="keywords" content="lookup, domain, whois,lookup domain, whois domain, .ir, .net, .org, .com, .af, جستجوگر, دامنه, دامین" />
<link rel="shortcut icon" href="http://codesign.ir/whois/favico.ico" type="image/x-icon"/>
</head>
<body>
<?php
if(strpos($_SERVER['REQUEST_URI'], '?') !== false) {
header('Location: http://codesign.ir/whois/' . implode('/', array_values($_GET)));
exit();
}
if (isset($_GET['domain'])) {
$placeholder = $_GET['domain'];
} else {
$placeholder = 'Enter Domain Name, Like: example.com';
}
?>
<div class="container rtl">
<div class="row" style=" margin:20px 0 0 0;">
<div class="span5 offset3">
<h3 class="yekan center">وضعیت نام دامنه</h3>
<div class="mitra normal"><span class="badge badge-info">!</span> از کادر زیر میتونین آزاد بودن دامین مورد نظرتون رو چک کنین.<br></div>
</div>
<div class="span5 offset3 well" style="margin-top:10px;">
<form method="get">
<div class="input-append ltr" >
<input name="domain" class="span4" type="text" id="appendedInputButton" placeholder="<?php echo ($placeholder); ?>">
<button type="submit" class="btn btn-info"><i class="icon-search icon-white"></i></button>

</div>
</form>
<?php if (isset($_GET['domain'])) {
include('functions/whois.php');
$domain = $_GET['domain'];
$dmn = explode ('.', $domain);
switch ($dmn[1])
{
case 'com' :
$server = 'whois.crsnic.net';
$resp = 'No match for';
break;

case 'net' :
$server = 'whois.crsnic.net';
$resp = 'No match for';
break;

case 'org' :
$server = 'whois.publicinterestregistry.net';
$resp = 'NOT FOUND';
break;

case 'ir' :
$server = 'whois.nic.ir';
$resp = 'no entries found';
break;

case 'af';
$server = 'whois.nic.af';
$resp = 'Available';
break;

};
$result = checkDomain($domain,$server,$resp);
if ($result) { ?>
<div class="alert alert-success rtl mitra">
تبریک میگم، دامنه مورد نظر شما جهت ثبت آزاده :)
</div>
<?php
} else { ?>
<div class="alert alert-error mitra">
متاسفانه این دامنه قبلا ثبت شده، یکی دیگه رو امتحان کن :(
</div>
<?php }
}
?>

</div>
<div class="span5 offset3">
<!-- AddThis Button BEGIN -->
<div class="addthis_toolbox addthis_default_style ">
<a class="addthis_button_preferred_1"></a>
<a class="addthis_button_preferred_2"></a>
<a class="addthis_button_preferred_3"></a>
<a class="addthis_button_preferred_4"></a>
<a class="addthis_button_compact"></a>
<a class="addthis_counter addthis_bubble_style"></a>
</div>
<script type="text/javascript">var addthis_config = {"data_track_addressbar":true};</script>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-518b5fd8690e5d74"></script>
<!-- AddThis Button END -->
</div>

</div>
</div>
</body>
</html>
و این کد هم برای lookup.php

<?php if (isset($_GET['domain'])) {

include('functions/whois.php');

$domain = $_GET['domain'];

$dmn = explode ('.', $domain);

switch ($dmn[1])

{

case 'com' :

$server = 'whois.crsnic.net';

$resp = 'No match for';

break;



case 'net' :

$server = 'whois.crsnic.net';

$resp = 'No match for';

break;



case 'org' :

$server = 'whois.publicinterestregistry.net';

$resp = 'NOT FOUND';

break;



case 'ir' :

$server = 'whois.nic.ir';

$resp = 'no entries found';

break;

};

$result = checkDomain($domain,$server,$resp);

if ($result) { ?>

<div id="result" class="alert alert-success rtl mitra">

تبریک میگم، دامنه مورد نظر شما جهت ثبت آزاده :)

</div>

<a class="btn btn-info btn-small yekan pull-left" href="step2.php"><i class="icon-chevron-right icon-white"></i> مرحله بعد</a>

<?php } else { ?>

<div id="result" class="alert alert-error mitra">

متاسفانه این دامنه قبلا ثبت شده، یکی دیگه رو امتحان کن :(

</div>

<?php }

}

?>


whois.php

<?php

function checkDomain($dmn,$server,$findText){

$con = fsockopen($server, 43);

if (!$con) return false;



// Send the requested doman name

fputs($con, $dmn."\r\n");



// Read and store the server response

$response = ' :';

while(!feof($con)) {

$response .= fgets($con,128);

}



// Close the connection

fclose($con);



// Check the response stream whether the domain is available

if (strpos($response, $findText)){

return true;

}

else {

return false;

}

}



?>

MMSHFE
سه شنبه 24 اردیبهشت 1392, 11:07 صبح
متد فرم رو Post کنید و با ‍POST_$ کار کنید. ""=target رو هم بهش اضافه کنید. target خالی بهتر از نبودن target توی فرمه. راستی، وقتی bootstrap.min.css رو گذاشتین، دیگه چرا bootstrap.css رو هم استفاده کردین؟

imohammad
سه شنبه 24 اردیبهشت 1392, 16:29 عصر
متد فرم رو Post کنید و با ‍POST_$ کار کنید. ""=target رو هم بهش اضافه کنید. target خالی بهتر از نبودن target توی فرمه. راستی، وقتی bootstrap.min.css رو گذاشتین، دیگه چرا bootstrap.css رو هم استفاده کردین؟
والا زیاد به بوتسترپ وارد نیستم
خب با پست که دیگه مقداری تو مروگر نمایش داده نمیشه، برای کارم به مشکل میخورم

MMSHFE
سه شنبه 24 اردیبهشت 1392, 20:09 عصر
مهم نیست که توی مرورگر نشون داده نشه. مهم اینه که توی صفحه مقصد بتونید دریافت کنید. اگه میخواین هم فرم کار کنه و هم اینکه بتونید آدرسهایی که توسط کاربر مستقیماً توی مرورگر تایپ میشه رو داشته باشین، بجای GET_$ و POST_$ از REQUEST_$ استفاده کنید.

imohammad
چهارشنبه 25 اردیبهشت 1392, 06:44 صبح
مهم نیست که توی مرورگر نشون داده نشه. مهم اینه که توی صفحه مقصد بتونید دریافت کنید. اگه میخواین هم فرم کار کنه و هم اینکه بتونید آدرسهایی که توسط کاربر مستقیماً توی مرورگر تایپ میشه رو داشته باشین، بجای GET_$ و POST_$ از REQUEST_$ استفاده کنید.
ممنون از خیرش گذشتم:لبخند: