当我尝试在其他PHP服务器上运行脚本时,出现了一个新问题。
在我的旧服务器上,即使未s声明任何参数,以下代码也可以正常工作。
s
<?php if ($_GET['s'] == 'jwshxnsyllabus') echo "<body onload=\"loadSyllabi('syllabus', '../syllabi/jwshxnporsyllabus.xml', '../bibliographies/jwshxnbibliography_')\">"; if ($_GET['s'] == 'aquinas') echo "<body onload=\"loadSyllabi('syllabus', '../syllabi/AquinasSyllabus.xml')\">"; if ($_GET['s'] == 'POP2') echo "<body onload=\"loadSyllabi('POP2')\">"; elseif ($_GET['s'] == null) echo "<body>" ?>
但是现在,在本地计算机(XAMPP-Apache)上的本地服务器上,s如果未定义for的值,则会出现以下错误。
Notice: Undefined index: s in C:\xampp\htdocs\teaching\index.php on line 43 Notice: Undefined index: s in C:\xampp\htdocs\teaching\index.php on line 45 Notice: Undefined index: s in C:\xampp\htdocs\teaching\index.php on line 47 Notice: Undefined index: s in C:\xampp\htdocs\teaching\index.php on line 49
如果为声明了值s,但脚本要调用某些javascript函数会发生什么,但是如果未声明任何内容,我希望页面能够正常加载。
你能帮助我吗?
错误报告不会在以前的服务器上包含通知,这就是为什么您没有看到错误的原因。
您应该在尝试使用索引之前检查索引是否s确实存在于$_GET数组中。
$_GET
这样的话就足够了:
if (isset($_GET['s'])) { if ($_GET['s'] == 'jwshxnsyllabus') echo "<body onload=\"loadSyllabi('syllabus', '../syllabi/jwshxnporsyllabus.xml', '../bibliographies/jwshxnbibliography_')\">"; else if ($_GET['s'] == 'aquinas') echo "<body onload=\"loadSyllabi('syllabus', '../syllabi/AquinasSyllabus.xml')\">"; else if ($_GET['s'] == 'POP2') echo "<body onload=\"loadSyllabi('POP2')\">"; } else { echo "<body>"; }
使用switch语句使代码更具可读性可能会有所帮助(如果您打算增加更多的案例)。
switch
switch ((isset($_GET['s']) ? $_GET['s'] : '')) { case 'jwshxnsyllabus': echo "<body onload=\"loadSyllabi('syllabus', '../syllabi/jwshxnporsyllabus.xml', '../bibliographies/jwshxnbibliography_')\">"; break; case 'aquinas': echo "<body onload=\"loadSyllabi('syllabus', '../syllabi/AquinasSyllabus.xml')\">"; break; case 'POP2': echo "<body onload=\"loadSyllabi('POP2')\">"; break; default: echo "<body>"; break; }
编辑:顺便说一句,我编写的第一组代码模仿了您的全部意图。意外值的预期结果是否?s=意味着不输出<body>标签,或者这是疏忽?请注意,该开关将始终通过默认设置来解决此问题<body>。
?s=
<body>