【问题标题】:PHP script to deploy another PHP script [closed]用于部署另一个 PHP 脚本的 PHP 脚本 [关闭]
【发布时间】:2012-02-13 21:47:02
【问题描述】:

我为很多人制作了一个熟悉的系统。手动复制我制作的模板脚本会占用我很多时间,并根据需要进行编辑。导入mysql数据库等。所以几天前我在想,“如果我可以制作一个表格来填写,当给出正确的mysql信息和正确的变量(如链接和样式)时,它会进入并执行以下任务: 1. 在指定的 mySQL 数据库中创建一个特定的表 2. 实际上创建一个类似于以下模板代码的脚本:

    <?php
// Creator: Will Renfroe
// All rights Reserved

//Vote Sites and MySQL
$DBNAME="DATABASENAME";
$DBUSER="DATABASENAME";
$DBPASSWORD="PASS";
$DBHOST="DATABASE HOST NAME";

///////////////////
// SCRIPT
///////////////////
mysql_connect($DBHOST, $DBUSER, $DBPASSWORD) or die("<center>Cannot connect to MySQL</center>");
mysql_select_db($DBNAME) or die("<center>Cannot select DB</center>");
/////////

?>

<?php
    include("secure.php");
    if (getenv(HTTP_X_FORWARDED_FOR)) {
    $pipaddress = getenv(HTTP_X_FORWARDED_FOR);
    $ipaddress = getenv(REMOTE_ADDR);
} else {
    $ipaddress = getenv(REMOTE_ADDR);
}

if(isset($_POST['dovote'])){
check_inject();

    //Get user id from session
    $userid=secure($_POST["nick"]);
    $time=time();

    $query=mysql_query("SELECT nick,time FROM votesdb WHERE ip='$ipaddress'");
    $checkip=mysql_num_rows($query);
    $iprow=mysql_fetch_row($query);

    $query=mysql_query("SELECT time FROM votesdb WHERE nick='$userid'");
    $checkuser=mysql_num_rows($query);
    $userrow=mysql_fetch_row($query);

    if ($checkuser){
        //if user vote
        if ($checkip and $time>$iprow[1]){$canvote=1;}
        if (!$checkip and $time>$userrow[0]){$canvote=1;}
    }else{
        //if user never vote
        if ($checkip and $time>$iprow[1]){$canvote=1;}
        if (!$checkip){$canvote=1;}
    }

    //Do Vote
    if ($canvote){
        $newtime=time()+60*60*24;

        if ($checkuser){
            //update
            mysql_query("UPDATE votesdb SET time=$newtime, ip='$ipaddress', votes=votes+1, flag=flag+1 WHERE nick='$userid'");
        }else{
            //insert
            $query=mysql_query("INSERT INTO votesdb(nick,time,ip,votes,flag) VALUES ('$userid',$newtime,'$ipaddress',1,1)");
        }

        //Add nick to nicklist table
        $query=mysql_query("INSERT INTO nicklist(nick) VALUES ('$userid')");

        echo "<font color='green'>Thanks you for a vote. You have been rewarded 10 diamond!</font>";
    }else{
        echo "<font color='red'>You can only vote every 24 hours to get a reward.</font>";
    }
}
?>

<center>
    <form target="_blank" action="**WEBSITE URL CAN GO HERE**" method="post"> <input onclick="document.getElementById('vote2').disabled=false" value="NAME OF BUTTON" name="vote1" id="vote1" type="submit" />&nbsp;</form>
    <form method="post" action="**WEBSITE URL CAN GO HERE**" target="_blank"> <input disabled="disabled" name="vote3" value="NAME OF BUTTON" onclick="document.getElementById('vote4').disabled=false" id="vote2" type="submit" /> </form>
  </p>
  <span class="minecrafttext">Then Enter Your In-Game-Name: </span> <br />
<form method="POST">
<input name="nick" onSubmit="return nameempty();" /> <br/>
<form method="POST">
    <input name="dovote" type="submit" value="Get your diamonds!" onclick="document.getElementById('vote4').disabled=false" id="vote4" disabled="disabled"/> 
</form> 

©<a href="mailto:Willrenfroe@gmail.com">WILLRENFROE</a>
</center>

</body>

它需要询问 DATABASENAME、DATABASE、USERNAME、DTABASE、PASSWORD、DATABASE HOST、链接等,有人可以帮我吗?我尝试了谷歌并找不到任何东西。

【问题讨论】:

  • 请不要使用未加引号的字符串(未定义的常量,php 有一个讨厌的后备来将它们作为字符串处理,这就是您的代码工作的原因)。将error_reporting(E_ALL); 添加到您的代码中,您就会知道原因!
  • 每个 CMS 在安装时都会这样做。只需查看 joomla 或 wordpress 或您能想到的任何其他 cms 的安装代码,您就会知道它是如何完成的。你的问题有点givemecodez,最好尝试实现你想要的系统并带着你遇到的具体问题来到这里。请参阅faq,了解您应该在此处提出的问题类型。
  • phpbb 做同样的事情只是为了添加到 vascowhite 的列表中。
  • 不要这样做:$ipaddress = getenv(REMOTE_ADDR);然后做这样的事情: $query=mysql_query("SELECT nick,time FROM votesdb WHERE ip='$ipaddress'");确保在执行 mysql 查询之前转义所有内容。根据接受值的预定义数组检查 ipadress。 $userid 也是一样。

标签: php deployment


【解决方案1】:

您可以使用nowdoc 将脚本存储在变量中。

然后您可以执行str_replace 之类的操作来转储您需要的数据。例如str_replace('DATABASENAME, $DBNAME, $script); 将脚本中的DATABASENAME 替换为$DBNAME 的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2012-12-17
    • 2013-12-26
    • 2023-03-19
    相关资源
    最近更新 更多