学习PHP——有更好的方法吗?

学习PHP——有更好的方法吗?,php,Php,我是PHP的新手。我已经写了以下两个文件,看起来确实有效 我想知道我是否能只用一个脚本就达到效果 我想知道有没有更好的办法 每次dox.php都必须重定向到index.php,我可以取消重定向吗 用文字概括两个文件的内容: php创建一个包含8个图像的页面。所有这8个图像都有备用版本,指示图像/按钮是否处于活动状态。单击按钮,执行操作,再次单击按钮,执行的操作将反转。(使用XOR函数)-图像/按钮的当前状态由外部变量决定。(有点像反馈系统) 目录:index.php ARC项目:阿德尔的房间控

我是PHP的新手。我已经写了以下两个文件,看起来确实有效

  • 我想知道我是否能只用一个脚本就达到效果
  • 我想知道有没有更好的办法
  • 每次dox.php都必须重定向到index.php,我可以取消重定向吗
  • 用文字概括两个文件的内容: php创建一个包含8个图像的页面。所有这8个图像都有备用版本,指示图像/按钮是否处于活动状态。单击按钮,执行操作,再次单击按钮,执行的操作将反转。(使用XOR函数)-图像/按钮的当前状态由外部变量决定。(有点像反馈系统)

    目录:index.php
    
    ARC项目:阿德尔的房间控制器
    欢迎来到ARC项目
    

    dox.php的内容

    <html>
    <title>PrimaryCommander</title>
    <body>
    <?php
    
    //Variable Declaration
    $set_val=$_REQUEST["setvalue"]; //Which light to switch on
    $cur_val=shell_exec('sudo pin 0x378'); //Current lights which are ON
    
    settype($set_val,"integer");
    
    $xor_result=$set_val^$cur_val;
    shell_exec('sudo parashell 0x378 '.$xor_result);
    header( 'Location: index.php' ) ;
    
    ?>
    </body>
    </html>
    
    
    首席指挥官
    
    Edit1:该脚本与并行端口接口-因此是shell_exec命令。命令“sudo parashell 0x378 0”将并行端口的所有管脚设置为0


    Edit2:我知道一旦页面被呈现,它就不能被改变。但是我可以制作页面以反映实时变化吗?(有点像facebook的live feed功能?

    我不会重新键入您的所有代码,但类似这样的东西可以做到:

    <?php
    
    // retrieve the current bit settings.
    $curx_val = shell_exec('sudo pin 0x378');
    $curx_val = decbin($curx_val);
    $curx_val = str_pad($curx_val,8,0,STR_PAD_LEFT);
    $bit_array = str_split($curx_val,1);
    
    
    if (isset($_GET['setvalue'])) {
       ... change the bit settings here
    }
    
    ?>
    ... display the page and current bit settings here
    <a href="index.php?setvalue=1"><img style="border: 0px solid ; width: 20px; height: 100px;" alt="bit0" src="images/bit <?php echo $bit_array[7]  ?>.png"></a>
    
    
    ... 在此处显示页面和当前位设置
    
    这样,当您第一次访问页面时,
    setvalue
    将不会出现在脚本的查询行中,因此整个“更改位”部分都将被避免。将检索当前位设置 展示。请注意,现在链接指向index.php


    请注意,如果此页面是供一般公众使用的,那么您必须格外小心如何执行shell_exec调用,尤其是因为您使用的是sudo。您正在以root权限执行“pin”程序,因此用户提交的任何恶意数据都可能完全破坏您的服务器。考虑有人处理通过XOR计算并生成<代码>的查询的情况;rm-rf/&。您的脚本现在将愉快地删除服务器上的所有内容。

    ooh
    shell\u exec
    …使用shell命令学习PHP?这个脚本是干什么用的?我觉得还行/安全,因为您使用的是带有
    settype()
    的类型转换。要使页面内容更新到位,您应该研究jQuerys
    .load()
    函数。您应该将这两个脚本结合起来(上面是更新代码,下面是输出数据),将所有内容打包成一个
    ,以便于实时更新。感谢您的回答Marc B,我会在Linux机器恢复电源后立即尝试。明白了!只要我学会了足够多的PHP,我就会尝试改变这一点——事实上,这是我的一个爱好项目,可以让我从世界任何地方控制我的设备——而且,我确实实现了一个弱身份验证系统!
    <?php
    
    // retrieve the current bit settings.
    $curx_val = shell_exec('sudo pin 0x378');
    $curx_val = decbin($curx_val);
    $curx_val = str_pad($curx_val,8,0,STR_PAD_LEFT);
    $bit_array = str_split($curx_val,1);
    
    
    if (isset($_GET['setvalue'])) {
       ... change the bit settings here
    }
    
    ?>
    ... display the page and current bit settings here
    <a href="index.php?setvalue=1"><img style="border: 0px solid ; width: 20px; height: 100px;" alt="bit0" src="images/bit <?php echo $bit_array[7]  ?>.png"></a>