अगर मैं ऐसा कुछ लेता हूं और करता हूं:
$p = 10;
$n = 3;
$evalstr = "\$f = 0.99 + ((.025 * \$p) * \$n);";
eval($evalstr);
echo $f;
मुझे 1.74 प्रदर्शित होते हैं, कोई त्रुटि नहीं सब कुछ ठीक है, लेकिन जब मेरे पास एक MySQL तालिका है जो इन समीकरणों को रखती है (इस उदाहरण के उद्देश्य के लिए, यह वही समीकरण है) ... जैसे:
$p = 10;
$n = 3;
while ($result = mysql_fetch_assoc($results)) {
$math = $result['math'];
//at this point $math = "\$f = 0.99 + ((.025 * \$p) * \$n);"
eval($math);
}
मुझे पार्स त्रुटि मिलती है: वाक्यविन्यास त्रुटि, अप्रत्याशित T_VARIABLE, AJAX \ getprices.php (30) में T_STRING की अपेक्षा: eval () लाइन 1 पर कोड
इस बारे में अनिश्चित क्यों, अगर मैं echo $math का प्रिंट करता हूं तो यह पहले उदाहरण में मेरे पास $evalstr के समान है। $p और $n वास्तव में GET चर से सेट किए गए हैं, लेकिन भले ही मैं उन्हें मैन्युअल रूप से सेट कर दूं, उदाहरण के लिए यह काम नहीं करता है।
2 जवाब
मुझे ऐसा लगता है, कि आपने डेटाबेस में एस्केप्ड $ सहित एक्सप्रेशन को स्टोर किया है। यदि आप पहले स्लैश हटाते हैं, तो आप कोशिश कर सकते हैं, अगर यह काम करता है:
eval(stripslashes($math));
मैं भी इस तरह के कोड को डेटाबेस में संग्रहीत करने और इसे निष्पादित करने के लिए eval का उपयोग करने में बहुत सावधानी बरतने की सलाह दूंगा। यहां सुरक्षा छेद की संभावना है। लेकिन मुझे लगता है, आप यह जानते हैं।
मुझे यह मिल गया, ऐसा लगता है कि एक चर के रूप में eval कोड को परिभाषित करते समय मुझे $ से बचना होगा, लेकिन इसे एक चर के रूप में MySQL से खींचते समय यह काम करता है यदि मैं $ को अनदेखा करता हूं
संबंधित सवाल
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।
eval()
कोvar_dump($math)
से बदलने का प्रयास करें और हमें बिल्कुल बताएं कि यह क्या प्रिंट करता है।