हर बार मुझे अपनी connection.php फाइल को इंडेक्स फाइल के साथ अपने सब-फोल्डर्स में रखना होता है। मैं यह समझने में विफल रहा कि मुझे अपनी कनेक्शन फ़ाइल को हर बार अपने सब-फ़ोल्डर्स के अंदर क्यों रखना है।

मैंने अपनी कनेक्शन फ़ाइल को रूट फ़ोल्डर में डालने का भी प्रयास किया है, और इसे इसके पथ नाम /connection.php से शामिल किया है, लेकिन यह मैसकल डेटा नहीं लाता है।

यह require'', include'', include_once'' के साथ काम नहीं करता है

मुझे इस विषय पर ज्यादा मदद नहीं मिली। क्या ऐसा करने का कोई बेहतर तरीका नहीं है?

अपडेट करें:

फ़ाइल संरचना

localhost/school/icse/index-icse

मुझे अपना connect_mysqli.php हर उप-फ़ोल्डर में इस तरह रखना होगा

कोड:

<?php
include'connect_mysqli.php';
$output = '';
$sql = "SELECT * FROM city WHERE state_id = '".$_POST["stateId"]."' ORDER BY city_name";
$result = mysqli_query($link, $sql);
$output = '<option value="">Select City</option>';
while($row = mysqli_fetch_array($result))
{
    $output .= '<option value="'.$row["city_id"].'">'.$row["city_name"].'</option>';
}
echo $output;
?>

शुक्रिया!

conSub वह फ़ोल्डर है जिसमें मेरी कनेक्शन फ़ाइल है connect_mysqli.php और दूसरा लाल वृत्त दिखाता है कि अब हम इस उप-फ़ोल्डर में हैं।

आम तौर पर इसे काम करना चाहिए। मैं समझ नहीं पा रहा हूँ, समस्या क्या है... मैंने कोशिश की

  • include("/conSub/connect_mysqli.php");
  • include("conSub/connect_mysqli.php");
  • include_once("/conSub/connect_mysqli.php");
  • include_once("conSub/connect_mysqli.php");
  • require("/conSub/connect_mysqli.php");
  • require("conSub/connect_mysqli.php");

कृपया जांचें कि यह मेरी डेटा संरचना है

directory structure of the project

0
Rohit Sharma 17 अगस्त 2017, 16:49

3 जवाब

सबसे बढ़िया उत्तर

सबसे पहले जांचें कि क्या आपने फ़ाइल का सही नाम टाइप किया है।

अन्य कुछ संभावित समाधान:

यदि आपकी फ़ाइलें connect_mysqli.php और index.php(या जो भी) एक ही निर्देशिका में हैं, तो आप इन विकल्पों का उपयोग कर सकते हैं

include_once("./connect_mysqli.php");

या

include_once("connect_mysqli.php");

यदि आपका connect_mysqli.php public_html/conSub में है और जिस फ़ाइल को कनेक्शन की आवश्यकता है वह school/icse में है, तो आप इस तरह उपयोग कर सकते हैं

include_once("../../conSub/connect_mysqli.php");

या अगर आपका public_html dir रूट डायरेक्टरी है तो आप इसका भी इस्तेमाल कर सकते हैं

include_once("/conSub/connect_mysqli.php"); //only if public_html is root dir
0
Phoenix404 17 अगस्त 2017, 17:55

PHP में शामिल हैं वर्तमान निर्देशिका (यानी स्क्रिप्ट की निर्देशिका जिसे कहा जाता था) में देखेंगे, और जो कुछ भी php.ini में शामिल_पथ के रूप में परिभाषित किया गया है। आप इसे set_include_path() के साथ भी जोड़ सकते हैं।

तो किसी बिंदु पर आपको अपनी स्क्रिप्ट के भीतर मूल निर्देशिका के संदर्भ में रखना होगा, या तो:

set_include_path('/var/www/html/school');
require_once("connect_mysqli.php");

या

require_once("/var/www/html/school/connect_mysqli.php");

न तो आदर्श है क्योंकि आप कोड में अपनी साइट के स्थान को हार्डकोड कर रहे हैं - यह बहुत पोर्टेबल नहीं है!

बेहतर अभ्यास (और अधिकांश PHP फ्रेमवर्क क्या करते हैं), सब कुछ एक index.php फ़ाइल के माध्यम से चलाना है। यह मानते हुए कि आप अपाचे का उपयोग करते हैं, आप अपने URL को अनुकूल बनाने के लिए mod_rewrite और .htaccess फ़ाइलों का उपयोग कर सकते हैं, जैसे:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

फिर आपके index.php में आपका ग्लोबल शामिल होना चाहिए और कुछ रूटिंग लॉजिक होना चाहिए, जैसे:

require_once "connect_mysqli.php";
if(file_exists($_GET['page'] . '.php') {
  require_once ($_GET['page'] . '.php');
}
else {
  require_once "error.php";
}

ऐसे कई तरीके हैं जिनसे आप इसे सुधार सकते हैं, लेकिन यह आपको नंगी हड्डियाँ देगा।

एक तरफ के रूप में, आपके कोड में आप अपने डेटाबेस क्वेरी में एक कच्चा $_POST वैरिएबल डालकर SQL इंजेक्शन हमलों के लिए खुद को खोल रहे हैं। कम से कम इससे बचना चाहिए। कृपया इसे पढ़ें: http://php.net/manual/en/ Security.database.sql-injection.php

2
james-geldart 17 अगस्त 2017, 17:26

कृपया इसे आजमाएं अगर मैं समझूं

<?php require_once("../../conSub/connect_mysqli.php");?>

Requ_once का उपयोग करें और /connection.php के साथ अपना सबफ़ोल्डर नाम निर्दिष्ट करें, मुझे आशा है कि यह काम करेगा

Dimulai dengan "/" kembali ke direktori root dan mulai dari sana

Dimulai dengan "../" memindahkan satu direktori ke belakang dan mulai dari sana

"../../" से शुरू होकर दो निर्देशिकाएं पीछे की ओर जाती हैं और वहां से शुरू होती हैं (और इसी तरह ...)

0
Dawud Abdul Manan 17 अगस्त 2017, 17:56