2011-11-29 13 views
8

PHP में, मैं if कथन का उपयोग कर रहा हूं यह पहचानने के लिए कि कोई उपयोगकर्ता लॉग इन है या नहीं, और परिणाम के आधार पर, मुख्य मेनू (यदि लॉग इन है) या "आपको लॉगिन करने की आवश्यकता है" संदेश प्रदर्शित नहीं कर रहा है। मैं तो इस तरह कर रहा हूँ:ईको के साथ HTML आउटपुट PHP में खराब अभ्यास माना जाता है?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
    <link rel="stylesheet" href="style.css" type="text/css" /> 
    <title>Home</title> 
</head> 
<body> 
    <div id="header"> 
     <a href="index.php"><img src="wtcdblogo.png" alt="WTC DB logo" /></a> 
    </div> 
    <?php 
     if($_SESSION['loggedIn'] == 1) { 
      echo "<div id='main'>MAIN MENU stuff goes here</div>"; 
     } else { 
      echo "<div id='main'>Please login...</div>"; 
     } 
    ?> 
</body> 
</html> 

आप देख सकते हैं, कोड या तो मुख्य मेनू या "लॉगिन करें" संदेश एक echo द्वारा निर्मित है प्रदर्शित करने के लिए। क्या यह बुरा अभ्यास है, शायद एक बेहतर तरीका है?

वैसे, मैंने ऊपर दिए गए स्निपेट में echo एस से अधिकांश HTML को काट दिया है। मुख्य मेनू एक सूची से बना है, लेकिन मुझे इस बात से परेशान नहीं था क्योंकि यह प्रश्न के लिए अप्रासंगिक है, मुझे लगता है।

उत्तर

24

मुझे लगता है कि यह खराब अभ्यास है। इस बारे में निश्चित नहीं है कि कोई और क्या सोचता है।

<div> 
     <? if ($_SESSION['loggedIn'] === 1): ?> 
     <div id="main">Main Menu stuff goes here</div> 
     <? else: ?> 
     <div id="main">Please log in...</div> 
     <? endif ?> 
    </div> 

आप पीएचपी से बाहर कूद कर सकते हैं: एक बात के लिए, यह वाक्य रचना हाइलाइटिंग के साथ पाठ संपादक में भयानक लग रहा है, तो आप, आदि

भाग निकले तार के बारे में चिंता करने के लिए इस तरह मैं यह कर रहा है टैग और सीधे एचटीएमएल का उपयोग करें। इस तरह से करने के लिए पेशेवर और विपक्ष हैं। मुझे चीजों को प्रतिबिंबित करने से बेहतर तरीका पसंद है। अन्य विकल्प यदि उन बयानों के परिणामों के आधार पर उन क्षेत्रों में नए विचार प्रस्तुत करना होगा। बहुत सारी संभावनाएं हैं, लेकिन उपरोक्त एक छोटा क्लीनर बनाने के लिए एकमात्र तरीका है और (मुझे लगता है) बेहतर है।

+0

डैमन ने मुझे इसे हराया! –

+0

धन्यवाद, यह चीजों को करने के लिए एक अच्छा साफ तरीका दिखता है। मेरे पास अन्य पृष्ठ हैं जो HTML को प्रतिबिंबित करते हैं और इसे कई बार पढ़ने के लिए बहुत गन्दा और कार्ड मिलता है। – james246

+0

* पढ़ने के लिए कड़ी;) – james246

5

ऐसा क्यों नहीं लिखते?

<?php if($_SESSION['loggedIn'] == 1): ?> 
    <div id='main'>MAIN MENU stuff goes here</div> 
<?php else: ?> 
    <div id='main'>Please login...</div> 
<?php endif; ?> 

का उपयोग alternative control structures में थोड़ा और अधिक अपने कोड से अपने मार्कअप अलग।

3
<?php if (condition) { ?> 
    <div> 
     some stuff 
    </div> 
<?php } ?> 

PHP की सुंदरता यह है कि आप यह कर सकते हैं।

+0

वास्तव में PHP विशिष्ट नहीं है .. –

6

मॉडरेशन में उपयोग किए जाने पर एचटीएमएल के लिए गूंज में कुछ भी गलत नहीं है। बस लंबे बहु-लाइन ब्लॉक के लिए इसका उपयोग न करें। आप हमेशा कुछ बदसूरत निर्माण के साथ खत्म हो जाएंगे, जो भागने और क्या नहीं है, जो चीज़ों को पढ़ने के लिए भी उलझन में डाल देता है।

यदि आप जिस एचटीएमएल को आउटपुट कर रहे हैं वह "स्थैतिक" है (डालने के लिए कोई चर नहीं है), तो PHP मोड (?>) को तोड़ने पर विचार करें और बस HTML को डंप करें। यदि आपको चर डालने की आवश्यकता है, तो HEREDOC का उपयोग करने पर विचार करें, जो एक डबल-उद्धृत स्ट्रिंग की तरह कार्य करता है, लेकिन उद्धरण के बिना।

0

कुछ लोग इसे खराब अभ्यास मानते हैं, यह किसी भी चीज़ के बारे में सच है। मुझे गूंज का उपयोग नहीं करना पसंद है। यदि आप ऐसा करते हैं तो यह ड्रीमवेवर जैसे संपादकों के लिए अधिक स्पष्ट है जो आप चाहते हैं और सभी स्वत: पूर्ण लाभ प्राप्त करें।

<?php 
if ($loggedin) 
{ 
?> 
Thank you for being logged in. <hr> 
<?php 
} 
else 
{ 
?> 
Please <a href='login.php'>login</a> 
<?php 
} 
?> 
+0

+1 स्वत: पूर्ण का उल्लेख करने के लिए। मैंने थोड़ा सा चीजों को स्पष्ट करने के लिए अपनी पोस्ट को थोड़ा सा संशोधित किया। –

1

कोई वास्तविक 'सर्वोत्तम अभ्यास' नहीं है, हालांकि कुछ तर्क देंगे कि वे एक या दूसरे को पसंद करते हैं। आदर्श रूप से यदि आप PHP से HTML को अलग करते हैं, तो आप अपने आवेदन के बैकएंड को फ्रंटेंड से अलग कर रहे हैं, इसलिए इसे पढ़ने, संशोधित करने और बनाए रखने में आसान बनाते हैं।

आपके कोड के लिए, मैं इसे संशोधित कर सकता हूं ताकि यह अधिक संक्षिप्त हो ('मेन मेन्यू सामान' के आधार पर आपका क्या मतलब है ...बस रख-रखाव और scalability की खातिर

<div id="main"> 
    <?= ($_SESSION['loggedIn'] == 1) ? 'MAIN MENU stuff goes here' : 'Please login...'; ?> 
</div> 
2

अपनी परियोजना एक उचित आकार के लिए हो जाता है, वहाँ अनिवार्य रूप से प्रस्तुतिकरण तत्वों और कार्यक्रम तर्क का एक साफ जुदाई के आसपास कोई रास्ता नहीं है,: 'मैं इस संपादन पर पुनर्विचार चाहते हैं)। तो आप अपने वर्तमान कोड में क्या कर रहे हैं वास्तव में कोई फर्क नहीं पड़ता; लंबे समय तक, आपको शुरुआत से एक साफ डिजाइन दृष्टिकोण देखना चाहिए।

कई मौजूदा समाधान हैं, आमतौर पर कुछ प्रकार के लेआउट टेम्पलेट्स शामिल होते हैं जो कोड द्वारा लोड होते हैं।

संबंधित मुद्दे

 संबंधित मुद्दे