php - 在Xampps中,PHP获取方法不工作

  显示原文与译文双语对照的内容
0 0

我是PHP的新手,我对获取方法感到困惑。

为什么循环中的$text 与 Windows 7中的Appserv一起工作,但是当我在Mac上尝试使用Xampps的代码时,我必须使用它 for($i=0; $i<strlen($_GET['text']); $i++) 改为改为。

首先,我明白了,在我使用 isset($_GET['text']) 之后,下次只使用 $text,但现在我感到困惑。


<? $color = array("#FFCCFF","#FFCCCC","#FFCC99","#FF99FF","#FF99CC",
"#FF9999","#FF66FF","#FF66CC","#FF6699","#FF6666");
if (isset($_GET['text'])) { 
 for($i=0; $i<strlen($text); $i++) { 
 $j = $i%10?>
 <font color=<?= $color[$j]?>><? echo"$text[$i]";?></font>
 } 
} else {
 echo"Empty String";
}?>

问题是你的许多帮助解决了


<?php $color = array("#FFCCFF","#FFCCCC","#FFCC99","#FF99FF","#FF99CC",
"#FF9999","#FF66FF","#FF66CC","#FF6699","#FF6666"); 
if( isset($_GET['text'])) {
 $text = $_GET['text'];
 for( $i=0; $i<strlen($text); $i++) {
 $j = $i%10;
 echo"<font color=$color[$j]>$text[$i]</font>";
 }
} else
 echo"Empty string";
?>

顺便说一下,我正尝试使用 HTML + PHP,因为我想在深入使用CSS之前使用 HTML 。

时间: 原作者:

0 0

你的问题的实际答案,如果 $text 作为 $_GET['text']的别名,可能是你的Windows Server 配置为 register_globals 设置为 on,这意味着在查询字符串中传递的任何内容都将被转换为适当的变量。

IE 。?awesome=true == $awesome ='true'

这是错误的在有问题的端禁用 register_globals,然后使用 $_GET['text'] 访问你的数据。

你的代码看起来会更好一些,如下所示:


<?php
$color = array("#FFCCFF","#FFCCCC","#FFCC99","#FF99FF","#FF99CC",
"#FF9999","#FF66FF","#FF66CC","#FF6699","#FF6666");
if (isset($_GET['text'])) {
 $text = $_GET['text'];
 for($i=0; $i <strlen($text); $i++) { 
 $j = $i % 10;?>
 <span style="color: <?= $color[$j]?>"><?= htmlentities($text[$i]);?></span>
 <?php } 
} else {
 echo"Empty String";
}
?>

请注意,我整理了你的代码,使它的更加理智/安全。 htmlentities 用于停止可能来自于这个的XSS vulns,尽管它不可能因为拆分了字符串而导致。 你 were <?php echo..?><?=..?> 因为它们是完全相同的东西。 另外,不要使用 <font>

你说过了

首先,我明白"在使用 isset ( $_GET ['text'] ) 之后) 下一次只使用( $text ),但现在我很困惑。

如果你知道你在混合它们,你为什么要这么做? 如果你正在检查 $_GET['text'] 是否被设置,那么你也只能使用它来访问。

原作者:
0 0

好吧,你为什么每次都从PHP里掉出来? 它允许一次有多行 PHP,你知道 !

$_GET['text'] 是一个变量访问它不做任何特殊的事情,但它特别是你可以访问它,而不管作用域( 它是全球性的) 。 仅在启用autoregister全局设置时引用 $text 是有效的,这对于各种原因是不推荐的。

因此,你的代码应该类似于:


<?php
$color = array(".....");
if( isset($_GET['text'])) {
 $l = strlen($_GET['text']);
 for( $i=0; $i<$l; $i++) {
 $j = $i%10;
 echo"<span style="color:".$color[$j].";">".$text[$i]."</span>";
 }
}
else echo"Empty string";
?>

我还擅自更新了最后一个milennium的HTML 。

原作者:
0 0

你应该先初始化 $text 变量,如下所示:

$text = $_GET['text'];

这应该能没有任何问题。

0 0

我仍然不确定你在做什么,但是:


$colours = array("#FFCCFF","#FFCCCC","#FFCC99","#FF99FF","#FF99CC","#FF9999","#FF66FF","#FF66CC","#FF6699","#FF6666");

if (isset($_GET['text'])) {
 $text = $_GET['text'];
 for ($i = 0; $i <strlen($text); $i++) {
 $j = $i%10;
 echo"<span style='color: {$colours[$j]}'>{$text[$i]}</span>";
 }
}
else {
 echo 'No text';
}

原作者:
...