0

使用 php 时,您是否根据文件目录或显示它的页面设置路径。

例如:

index.php 当然是首页

目录结构。

索引.php

包括 > footer.php、header.php

产品 > product.php [blueproduct] > blueproduct.php

storescripts > connect_to_mysql.php, more.php

=================================================

在页脚内部,我有一个无法在每一页上运行的脚本。它是一个收集信息的时事通讯脚本。这是我在包含的 footer.php 中使用的代码:

</div>
<div class="footer">
<div class="wideNewsletter">
<div class="wrapNewsletter">
<div class="newsletterIntro"><b>NEWSLETTER SIGN UP</b></div>
<div class="newsletterForm">
<?php
$name = "";
$email = "";
$msg_to_user = "";
if ($_POST['name'] != "") {

    include "../storescripts/connect_to_mysql.php"; 

    // Be sure to filter this data to deter SQL injection, filter before querying database
    $name = mysql_real_escape_string($_POST['name']);
    $email = mysql_real_escape_string($_POST['email']);


    $sql = mysql_query("SELECT * FROM newsletter WHERE email='$email'");
    $numRows = mysql_num_rows($sql);



    if (!$email) {

        $msg_to_user = '<div class="warning"><ul><li>Please type an email address ' . $name . '.</li></ul></div><br /><br />';

    } else if ($numRows > 0) {

        $msg_to_user = '<div class="warning"><ul><li>' . $email . ' is already in the system.</li></ul></div><br /><br />';

    } else {

        $sql_insert = mysql_query("INSERT INTO newsletter (name, email, dateTime) 
                                                    VALUES('$name','$email',now() )")  or die (mysql_error());

        $msg_to_user = '<div class="success"><ul><li>Thanks ' . $name . ', hope you find what you want!</li></ul></div><br /><br />';
        $name = "";
        $email = "";
    }
    $message = 'Name: ' . $_POST['name'] . ' Email: ' . $_POST['email']; 
mail('newproducts@moniquetrinidadjewelry.com', 'New Newsletter Sign Up at Monique Trinidad Jewelry',  $message);
}
?>
<form style="width:430px;" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset style="text-align:left;padding:0px;border:0px;"> 
Name:
<input name="name" type="text" maxlength="36" value="<?php echo $name; ?>" />
Email:
<input name="email" type="text" maxlength="36" value="<?php echo $email; ?>" />
<input type="image" src="https://www.moniquetrinidadjewelry.com/images/new-images/green-bullet.png" border="0" name="mySubmitBtn" type="submit" value="Submit">

</fieldset> 
</form></div>
<div style="position:absolute;top:120px;"><?php echo $msg_to_user; ?></div>
<div class="newsletterExplain">Receive product updates. Remember only one of each!</div>
</div>
</div><!--wide newletter end-->
<div class="wrapFooter">


<div class="tearOneFooter">
    <div class="footerColumnList">
        <div class="footerTitles">Connect With Us</div>
        <div class="footerLists">
            <ul>
                <li><a href="https://www.moniquetrinidadjewelry.com/contact/contact-pop.php">Connect With Monique!</a></li>
            </ul>
        </div>

    </div>
<!--Seperate Connect With us Column from Information Column-->
    <div class="footerColumnList">
        <div class="footerTitles">Information</div>
        <div class="footerLists">
            <ul>
                <li><a href="https://www.moniquetrinidadjewelry.com/about-us.php">About Us</a></li>
                <li><a href="https://www.moniquetrinidadjewelry.com/packaging.php">Packaging</a></li>
                <li><a href="https://www.moniquetrinidadjewelry.com/terms-and-conditions.php">Terms & Conditions</a></li>
            </ul>
        </div>
    </div>
<!--Seperate Information Column from Shipping and Returns Column-->
    <div class="footerColumnList">
        <div class="footerTitles">Shipping and Returns</div>
        <div class="footerLists">
            <ul>
                <li><a href="https://www.moniquetrinidadjewelry.com/return-policy.php">Orders and Returns<a/></li>
                <li><a href="https://www.moniquetrinidadjewelry.com/secure-shopping.php">Secure Shopping</a></li>
                <li></li>
            </ul>
        </div>
    </div>
<!--Seperate Shipping and Returns Column from Services & Support Column-->
    <div class="footerColumnList">
        <div class="footerTitles">Hours Of Operation</div>
        <div class="footerLists">
            <ul>
                <li>We are a 24/7 <br />Online Establishment!<br />(US Based)</li>
            </ul>
        </div>
    </div>
<!--Seperate Connect With us Column from Information Column-->
</div>
<!--Beging SecondTearFooterArea-->
<div class="tearTwoFooter">

    <!--<div class="signUpNewsLetter"><img src="https://www.moniquetrinidadjewelry.com/images/news_letter_temp_IMG.png" alt="newsletter" /></div>-->
    <div class="paymentOptions"><img src="https://www.moniquetrinidadjewelry.com/images/payment_options_temp.png" alt="payment options" /></div>
    <div class="twitter"><a href="https://twitter.com/MoniqueJewelry"><img src="https://www.moniquetrinidadjewelry.com/images/twitter_temp.png" alt="twitterLink" /></a></div>


</div>
</div>
</div>
</div>

这适用于产品目录的 [blueproduct] 目录,但不是 index.php。

我也有另一个问题,但我相信更好的做法是在我对这个问题进行研究后提出另一个问题,对吗?如果不让我知道,我将编辑此原始消息。

==================================================== ===============================

下面的编辑和补充

我已经配置了所有东西,我相信我可以解决这个问题。我真的被这个难住了。让您更好地了解我的意思的链接是http://www.moniquetrinidadjewerly.com。如果您去那里尝试它不处理的表单,但是如果您在导航中选择“项链”,您可以看到相同的表单工作正常并且运行正常。下面是更新后的 footer.php 文件,其中包含对 abs 路径的更改。

</div>
<div class="footer">
<div class="wideNewsletter">
<div class="wrapNewsletter">
<div class="newsletterIntro"><b>NEWSLETTER SIGN UP</b></div>
<div class="newsletterForm">
<?php
$name = "";
$email = "";
$msg_to_user = "";
if ($_POST['name'] != "") {

    include_once(DOC-ROOT."/storescripts/connect_to_mysql.php");

    // Be sure to filter this data to deter SQL injection, filter before querying database
    $name = mysql_real_escape_string($_POST['name']);
    $email = mysql_real_escape_string($_POST['email']);


    $sql = mysql_query("SELECT * FROM newsletter WHERE email='$email'");
    $numRows = mysql_num_rows($sql);



    if (!$email) {

        $msg_to_user = '<div class="warning"><ul><li>Please type an email address ' . $name . '.</li></ul></div><br /><br />';

    } else if ($numRows > 0) {

        $msg_to_user = '<div class="warning"><ul><li>' . $email . ' is already in the system.</li></ul></div><br /><br />';

    } else {

        $sql_insert = mysql_query("INSERT INTO newsletter (name, email, dateTime) 
                                                    VALUES('$name','$email',now() )")  or die (mysql_error());

        $msg_to_user = '<div class="success"><ul><li>Thanks ' . $name . ', hope you find what you want!</li></ul></div><br /><br />';
        $name = "";
        $email = "";
    }
    $message = 'Name: ' . $_POST['name'] . ' Email: ' . $_POST['email']; 
mail('newproducts@moniquetrinidadjewelry.com', 'New Newsletter Sign Up at Monique Trinidad Jewelry',  $message);
}
?>
<form style="width:430px;" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset style="text-align:left;padding:0px;border:0px;"> 
Name:
<input name="name" type="text" maxlength="36" value="<?php echo $name; ?>" />
Email:
<input name="email" type="text" maxlength="36" value="<?php echo $email; ?>" />
<input type="image" src="https://www.moniquetrinidadjewelry.com/images/new-images/green-bullet.png" border="0" name="mySubmitBtn" type="submit" value="Submit">

</fieldset> 
</form></div>
<div style="position:absolute;top:120px;"><?php echo $msg_to_user; ?></div>
<div class="newsletterExplain">Receive product updates. Remember only one of each!</div>
</div>
</div><!--wide newletter end-->
<div class="wrapFooter">


<div class="tearOneFooter">
    <div class="footerColumnList">
        <div class="footerTitles">Connect With Us</div>
        <div class="footerLists">
            <ul>
                <li><a href="https://www.moniquetrinidadjewelry.com/contact/contact-pop.php">Connect With Monique!</a></li>
            </ul>
        </div>

    </div>
<!--Seperate Connect With us Column from Information Column-->
    <div class="footerColumnList">
        <div class="footerTitles">Information</div>
        <div class="footerLists">
            <ul>
                <li><a href="https://www.moniquetrinidadjewelry.com/about-us.php">About Us</a></li>
                <li><a href="https://www.moniquetrinidadjewelry.com/packaging.php">Packaging</a></li>
                <li><a href="https://www.moniquetrinidadjewelry.com/terms-and-conditions.php">Terms & Conditions</a></li>
            </ul>
        </div>
    </div>
<!--Seperate Information Column from Shipping and Returns Column-->
    <div class="footerColumnList">
        <div class="footerTitles">Shipping and Returns</div>
        <div class="footerLists">
            <ul>
                <li><a href="https://www.moniquetrinidadjewelry.com/return-policy.php">Orders and Returns<a/></li>
                <li><a href="https://www.moniquetrinidadjewelry.com/secure-shopping.php">Secure Shopping</a></li>
                <li></li>
            </ul>
        </div>
    </div>
<!--Seperate Shipping and Returns Column from Services & Support Column-->
    <div class="footerColumnList">
        <div class="footerTitles">Hours Of Operation</div>
        <div class="footerLists">
            <ul>
                <li>We are a 24/7 <br />Online Establishment!<br />(US Based)</li>
            </ul>
        </div>
    </div>
<!--Seperate Connect With us Column from Information Column-->
</div>
<!--Beging SecondTearFooterArea-->
<div class="tearTwoFooter">

    <!--<div class="signUpNewsLetter"><img src="https://www.moniquetrinidadjewelry.com/images/news_letter_temp_IMG.png" alt="newsletter" /></div>-->
    <div class="paymentOptions"><img src="https://www.moniquetrinidadjewelry.com/images/payment_options_temp.png" alt="payment options" /></div>
    <div class="twitter"><a href="https://twitter.com/MoniqueJewelry"><img src="https://www.moniquetrinidadjewelry.com/images/twitter_temp.png" alt="twitterLink" /></a></div>


</div>
</div>
</div>
</div>

config.inc.php 文件位于主目录中,内容如下:

<?php
define("Monique trinidad Jewelry","My Website");
define("DOC_ROOT","/home3/onlinfr7/public_html");
define("URL","https://www.moniquetrinidadjewelry.com");
?>

我不确定问题出在哪里,或者页脚中的主页(index.php)时事通讯表单到底发生了什么。为什么它在一页中有效,而在另一页中无效。似乎路径可能不是我最初想到的问题。有什么建议吗?

4

2 回答 2

0

当包含其他文件时,我喜欢做的事情是创建一个配置文件并将其包含在主文件或标头中,例如 index.php

所以这可能是我的配置文件称为config.inc.php

<?php
define("SITENAME","My Website");
define("DOC_ROOT","/home/username/webroot");
define("URL","http://www.example.com");
?>

我将此配置文件包含在我的 index.php 中,例如 include("/home/username/webroot/config.inc.php");

然后我可以DOC_ROOT在我想在某个地方包含另一个文件时使用它,它总是有完整的绝对路径,这样你就知道它被包含了。

例如include_once(DOC_ROOT."/storescripts/connect_to_mysql.php");

于 2013-06-04T20:02:57.833 回答
0

current working directory,您可以使用getcwd()获得。这是您执行的任何文件操作中所有内容的相对路径默认情况下,它将是执行主脚本的目录。

无论你是相对于那个,还是相对于其他东西,或者只是绝对的一切都取决于你。没有正确/错误的答案 - 只要您最容易维护即可。

于 2013-06-04T19:51:40.213 回答