2012-03-01 19 views
8

Vì vậy, tôi có tiêu đề trang là một phần của mẫu Magento; Tôi muốn nó hiển thị 1 trong 2 tùy chọn, tùy thuộc vào URL là gì. Nếu URL là tùy chọn 1, hiển thị tiêu đề 1. Nếu URL là bất cứ điều gì khác, hiển thị tiêu đề 2. Đây là những gì tôi đã đưa ra, nhưng nó làm sụp đổ trang của tôi:PHP nếu URL bằng này sau đó thực hiện hành động

<div class="page-title"> 
<h1><?php 
$host = parse_url($domain, PHP_URL_HOST); 
if($host == 'http://domain.com/customer/account/create/?student=1') { 
echo $this->__('Create an account if you are a Post Graduate Endodontic Resident and receive our resident pricing. Please fill in all required fields. Thank you!') 
} 
else 
{ 
echo $this->__('Create an Account') 
} 
?></h1> 
</div> 

Bất cứ ai có bất cứ ý tưởng?

EDIT: Vì vậy, nó sẽ giống như thế này?

$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 
if($host == 'http://domain.com/customer/account/create/?student=1') 
+1

"Làm cho sự cố trang của tôi" có nghĩa là gì? Bạn có nhận được thông báo lỗi không? Hơn nữa: Bạn đã xác định biến $ domain ở đâu? –

+0

Mọi thứ trước khi phần này tải trang, sau đó nó dừng lại. Không có thông báo lỗi – miles

+0

Tôi nhận $ domain từ chủ đề này: http://stackoverflow.com/questions/1122261/php-check-if-domain-equals-value-then-perform-action – miles

Trả lời

22

Bạn đang tìm kiếm URL mà trang hiện đang truy cập? Bạn đang sử dụng parse_url sai đường; đó là nếu bạn chỉ muốn có được máy chủ, hoặc tên miền, tức là chỉ "dev.obtura.com". Có vẻ như bạn muốn nhiều hơn thế. Ngoài ra, bạn không bao giờ cài đặt biến số $domain, vì vậy parse_url() không biết phải làm gì với nó. Vì vậy, hiện tại, câu hỏi if của bạn sẽ luôn trả về 'Tạo tài khoản`.

Thay vào đó, thiết lập $host với $_SERVER biến:

$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

Bạn cũng sẽ cần phải loại bỏ "http: //" từ kiểm tra của bạn - $host sẽ chỉ chứa tất cả mọi thứ sau "http: //"

Aron Cederholm được đề xuất, bạn cần thêm dấu chấm phẩy (;) vào cuối câu lệnh echo.

Vì vậy, mã PHP của bạn sẽ giống như thế này:

$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 
if($host == 'domain.com/customer/account/create/?student=1') 
{ 
    echo $this->__('Create an account if you are a Post Graduate Endodontic Resident and receive our resident pricing. Please fill in all required fields. Thank you!'); 
} 
else 
{ 
    echo $this->__('Create an Account'); 
} 
+0

Xem chỉnh sửa của tôi ở trên – miles

+0

@miles Đã chỉnh sửa câu trả lời của tôi để chứa các quan sát của bạn, cho những người khác đến để xem câu trả lời. –

4

Tôi không chắc chắn bạn đang lấy quyền miền. Tôi không thực sự hiểu parse_url nhiều, và bạn đã không cho chúng tôi thấy những gì $domain được định nghĩa là.

Thông thường nếu tôi muốn lấy tên miền, tôi sẽ thực hiện việc này: $host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] Sau đó, phần còn lại của mã của bạn.

Điều đó nếu tuyên bố khác có vẻ hợp pháp với tôi, vì vậy tôi sẽ thử ở trên và xem cách thực hiện. ;)

Chỉnh sửa: Rất tiếc, John đã đánh bại tôi. :)

+0

Xem chỉnh sửa của tôi ở trên. Tôi đã thử nó, nhưng có kết quả tương tự như trước. – miles

3

Bạn nên thêm dấu chấm phẩy vào câu lệnh của mình trong if-else.

if($host == 'http://dev.obtura.com/customer/account/create/?student=1') { 
    echo $this->__('Create an account if you are a Post Graduate Endodontic Resident and receive our resident pricing. Please fill in all required fields. Thank you!'); 
} 
else 
{ 
    echo $this->__('Create an Account'); 
} 
+0

Trang không còn bị lỗi nữa, nhưng tuyên bố không hoạt động. Tôi vẫn nhận được dòng tiêu đề 'Tạo tài khoản' thứ hai – miles

+1

Hãy thử lặp lại $ host để xem vì lý do tự tại sao nó không bằng url mong muốn của bạn. –

+0

@miles Bạn đã thử đặt $ host như tôi đã đề xuất chưa? –

Các vấn đề liên quan