我有以下js代码,除非用户输入值,否则将重新加载页面。
<script type="text/javascript">
var name = prompt("Please enter your name:");
if (name === "") {
location.reload();
} else if (name) {
} else {
location.reload();
}
</script>
我想用来将结果传递给PHP变量。我知道这是不可能的,但这样的功能有效:
<?php
//prompt function
function prompt($prompt_msg){
echo("<script type='text/javascript'> var answer = prompt('".$prompt_msg."'); </script>");
$answer = "<script type='text/javascript'> document.write(answer); </script>";
return($answer);
}
//program
$prompt_msg = "Please type your name.";
$name = prompt($prompt_msg);
$output_msg = "Hello there ".$name."!";
echo($output_msg);
?>
无论如何,我似乎无法检查$ name是否为空值/空值。似乎没什么用。
有人能指出我可以验证用户是否在PHP代码中输入空值(或按下取消)的方向(类似于我在js中的内容)
感谢
答案 0 :(得分:1)
我无法发表评论,所以我认为答案就足够了。
据我所知,如果用户按下取消,您将无法直接获取。但是你可以使用empty()来检查结果是否为空。
function prompt($prompt_msg){
echo("<script type='text/javascript'> var answer = prompt('".$prompt_msg."'); </script>");
$answer = "<script type='text/javascript'> document.write(answer); </script>";
// Checks if $answer is empty/spaces
if (!empty($answer)) {
// Not empty, return
return($answer);
} else {
// $answer is empty, we need to reprompt them.
// Reprompt them, etc
}
}
这是我的第一个答案之一,所以我希望它能够反映出正确的答案格式。我也希望我能正确理解你。我为没有能够对此发表评论而道歉。
PHP Empty() - http://php.net/manual/en/function.empty.php
根据以下评论,此处是经过修改的设置。
new_file.php(创建文件)
<?php
// Get Post
if (!empty($_POST['name'])) {
// Get User's name
$input_name = trim($_POST['name']);
// Create new file with name of user
$file = fopen($input_name . ".txt", "w") or die("Unable to open file!");
fwrite($file, $input_name . "\n");
fclose($file);
echo "New file created.";
}
?>
index.html(主页或用户输入名称的位置)
<script>
$(document).ready(function(){
// Prompt for username
var input_name = prompt("Please enter your name:");
// If the username was entered
if (input_name != null) {
// Post to new_file.php
$.post("new_file.php", {name: input_name }, function(status){
alert(status);
});
}
});
</script>
答案 1 :(得分:1)
不要混淆自己。只需将值作为URL参数路径并在服务器端进行检查。
<?php if (!isset($_GET['name'])): ?>
<script type="text/javascript">
var loc = location.href;
var name = prompt("Please enter your name:","");
if (name == "" || name =='null') {
location.reload();
} else {
location.href = loc+"?name="+name;
}
</script>
<?php else: ?>
<?php echo strip_tags($_GET['name']); ?>
<?php endif; ?>
然而要取消意外结果,在此解决方案中,我认为您的网址没有参数,因此,else if
:location.href = loc+"?name="+name;
但如果有参数,您可以比如location.href = loc+"&name="+name;