2009-10-23 29 views
34

मैं अपने PHP कोड के शीर्ष पर कुछ लाइनों निम्नलिखित जोड़ा जाना चाहिए, लेकिन यह त्रुटि दे रहा है:पीएचपी त्रुटि: समारोह नाम एक स्ट्रिंग

गंभीर त्रुटि: समारोह नाम /home/reg.php में कोई स्ट्रिंग होना चाहिए लाइन 2

<?php 
if ($_COOKIE('CaptchaResponseValue') == "false") 
{ 
    header('location:index.php'); 
    return; 
} 
?> 

मैंने यह भी कोशिश की: $ _COOKIE ("CaptchaResponseValue")। कुकी सफलतापूर्वक सेट है और उपलब्ध है। जब मैं $ _COOKIE का उपयोग कर रहा हूं तो यह त्रुटि क्यों दे रहा है?

उत्तर

93

यह $_COOKIE['name'] होना चाहिए, नहीं $_COOKIE('name')

$ _COOKIE एक सरणी, नहीं एक समारोह है।

5

अपने $_COOKIE के साथ स्क्वायर ब्रेसिज़ का प्रयास करें, ब्रांड्स नहीं। इस तरह:

<?php 
if ($_COOKIE['CaptchaResponseValue'] == "false") 
{ 
    header('Location: index.php'); 
    return; 
} 
?> 

मैंने आपके स्थान हेडर को भी थोड़ा सा सही किया।

2

आप पता लगाना यदि कुकी सेट है ...

if (isset($_COOKIE['cookie'])) 
+0

@anonymous क्यों डीवी ? –

+1

वोट-सिस्टम कैसे काम करता है इसके कारण। लोग उत्तर देते हैं कि वे प्रश्न के लिए अधिक प्रासंगिक और अधिक उपयोगी पाते हैं। और लोग नीचे वोट देते हैं कि वे कम दिलचस्प पाते हैं। मुझे कल्पना है कि यही कारण है कि आप नीचे मतदान कर रहे थे। –

+0

@ फिलिप एकबर्ग प्रबुद्ध हो रहा है ... यह बहुत अच्छा होगा अगर इन अज्ञात आत्माओं ने टिप्पणी क्यों छोड़ी .... लेकिन मुझे लगता है कि वास्तव में एक व्यापक अभ्यास नहीं है :) –

17

का उपयोग एक प्रोग्रामिंग भाषा या एक पटकथा भाषा में कोष्ठक का उपयोग करना चाहते हैं, तो आम तौर पर मतलब है कि यह एक समारोह है।

हालांकि $_COOKIE php में कोई फ़ंक्शन नहीं है, यह Array है। सरणी में डेटा तक पहुंचने के लिए आप स्क्वायर ब्रेसेस ('[' और ']' का उपयोग करते हैं) जो दर्शाता है कि किस इंडेक्स से डेटा प्राप्त करना है। तो $_COOKIE['test'] करके आप मूल रूप से कह रहे हैं: "मुझे इंडेक्स 'टेस्ट से डेटा दें।

अब, आपके मामले में, आपके पास दो संभावनाएं हैं: (1) या तो आप देखना चाहते हैं कि यह गलत है या नहीं - कुकी के अंदर देख कर या (2) देखें कि क्या वह वहाँ भी नहीं है।

इसके लिए आपको isset समारोह यदि चर या सेट नहीं है जो मूल रूप से जाँच करता है का उपयोग करें।

उदाहरण

if (isset($_COOKIE['test'])) 

और तुम अगर मान असत्य है जाँच करना चाहते हैं और यह सेट किया गया है आप कर सकते हैं यदि निम्न:

if (isset($_COOKIE['test']) && $_COOKIE['test'] == "false") 

एक बात है कि आप को ध्यान में रखना कर सकते हैं कि अगर पहला परीक्षण विफल रहता है, यह अभ्यस्त भी जाँच परेशान है अगला कथन अगर यह और (&&) है।

और यह समझाने के लिए कि आपको वास्तव में त्रुटि क्यों मिलती है "फ़ंक्शन एक स्ट्रिंग होना चाहिए", this page देखें। यह PHP में फ़ंक्शंस के बुनियादी निर्माण के बारे में है, आपको क्या याद रखना चाहिए कि PHP में एक फ़ंक्शन में केवल कुछ प्रकार के वर्ण हो सकते हैं, जहां $ इनमें से एक नहीं है। चूंकि PHP $ में एक चर का प्रतिनिधित्व करता है।

एक फ़ंक्शन इस तरह दिख सकता है: _myFunction _myFunction123 myFunction और कई अन्य पैटर्न में भी, लेकिन इसे $ और% जैसे वर्णों के साथ मिलाकर काम नहीं करेगा।

0

ब्रेसिज़ का उपयोग करने के लिए एक उपयोगी स्पष्टीकरण (ऊपर फिलिप एकबर्ग के उपयोगी उत्तर के अलावा) शॉर्ट पेपर Parenthesis in Programming Languages में पाया जा सकता है।

1

PHP.js में, $ _COOKIE एक समारोह ;-)

function $_COOKIE(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
    if (c.indexOf(nameEQ) == 0) return decodeURIComponent(c.substring(nameEQ.length,c.length).replace(/\+/g, '%20')); 
    } 
    return null; 
} 

के माध्यम से http://phpjs.org/functions/setcookie:509

+0

तकनीकी रूप से यह है लेकिन यह कुकीज़ सामग्री को एक सरणी में परिवर्तित कर रहा है, इसलिए उस सम्मान में जिसे कहा जाता है वह एक कार्य नहीं है। –

2

यह $_COOKIE['CaptchaResponseValue'] हो जाएगा, नहीं है $_COOKIE('CaptchaResponseValue')

-2
<?php 
    require_once '../config/config.php'; 
    require_once '../classes/class.College.php'; 
    $Response = array(); 
    $Parms = $_POST; 
    $Parms['Id'] = Id; 

     $Parms['function'] = 'DeleteCollege'; 
     switch ($Parms['function']) { 
     case 'InsertCollege': { 
      $Response = College::InsertCollege($Parms); 
      break; 
     } 
     case 'GetCollegeById': { 
      $Response = College::GetCollegeById($Parms['Id']); 
      break; 
     } 
     case 'GetAllCollege': { 
      $Response = College::GetAllCollege(); 
      break; 
     } 
     case 'UpdateCollege': { 
      $Response = College::UpdateCollege($Parms); 
      break; 
     } 
     case 'DeleteCollege': { 
      College::DeleteCollege($Parms['Id']); 
      $Response = array('status' => 'R'); 
      break; 
     } 
    } 
    echo json_encode($Response); 
?> 
+0

कृपया बताएं कि यह मूल प्रश्न का उत्तर कैसे देता है? – DaveP

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