简体   繁体   English

如何获得html的价值 <input type=“hidden”> 在PHP中?

[英]How to get the value of html <input type=“hidden”> in PHP?

I am a certifid newbie so pls be patient with me if my question might sound very idiotic to you. 我是经过认证的新手,所以如果我的问题对您来说很白痴,请耐心等待。

Hi guys. 嗨,大家好。 Im trying to get the value of an html <input type="hidden"> using PHP. 我试图使用PHP获取html <input type="hidden"> The value of that hidden element is passed from Javascript and I need to display the value of that hidden element by using php echo. 该隐藏元素的值是从Javascript传递的,我需要使用php echo显示该隐藏元素的值。 From what I understand (I hope I understood it right) when you do something like $description = isset($_GET['description']) ? $_GET['description'] : null; 根据我的理解(我希望我理解正确),当您执行类似$description = isset($_GET['description']) ? $_GET['description'] : null; $description = isset($_GET['description']) ? $_GET['description'] : null; and also <input type="hidden" id="description" value="<?php echo $description; ?>" /> you can access/display the value of the hidden element by using <?php echo $_GET['description']; ?> 并且<input type="hidden" id="description" value="<?php echo $description; ?>" />您可以使用<?php echo $_GET['description']; ?>访问/显示隐藏元素的值<?php echo $_GET['description']; ?> <?php echo $_GET['description']; ?> but I am getting an undefined index: description. <?php echo $_GET['description']; ?>但我得到一个未定义的索引:description。 I am a total noob so I am really confused about this. 我是一个菜鸟,所以我对此很困惑。 I hope my question is not that confusing. 我希望我的问题不会那么令人困惑。 Anyway I am very willing to answer probing questions. 无论如何,我非常愿意回答探索性问题。

BTW, here are the codes: 顺便说一句,这是代码:

index.php

<?php include('functions.php'); ?>

<?php 
 $yr = isset($_GET['year_list']) ? $_GET['year_list'] : null;
 $evnt = isset($_GET['event_list']) ? $_GET['event_list'] : null; 
 $description = isset($_GET['description']) ? $_GET['description'] : null; 
?>

<html>
<head>
 <script type="text/javascript" src="myscripts.js"></script>
 <style type='text/css'>
  #show_description {
   min-height: 100px;
   min-width: 500px;
   max-height: 100px;
   max-width: 500px;
   background-color: #000;
   color: #fff;
   padding: 10px;
  }
 </style>
</head>
<body onload="check_year_event();">
 <div>
  <form name="myform" action="index.php" method="get" >
   <input type="hidden" id="hidden_year_list" value="<?php echo $yr; ?>" />
   <input type="hidden" id="hidden_event_list" value="<?php echo $evnt; ?>" />
   <input type="hidden" id="description" value="<?php echo $description; ?>" />

   Select Year: <?php echo hspacer(1); ?>
   <select id="year_list" name="year_list" onchange="check_year_event();" >
   <?php  
    for($year = (date('Y') - 100); $year <= (date('Y') + 100); $year++ ) {
     if ($year == date('Y'))  echo "<option value='$year' name='$year' selected='' >" . $year . "</option>";
     else echo "<option value='$year' name='$year' >" . $year . "</option>";
    }
   ?>
   </select>
   <?php echo hspacer(5); ?>
   Select Event:  <?php echo hspacer(1); ?>
   <select id="event_list" name="event_list" onchange="check_year_event();" >
   <?php  
    $events = array("Karate Tournament", "Beauty Pageant", "Film Festival", "Singing Contest", "Wedding");

    foreach($events as $event) echo "<option value='$event' name='$event' >" . $event . "</option>";
   ?>
   </select>
   <?php echo vspacer(2); echo hspacer(22); ?>
   <input type="submit" id="send_notice" value="Send Notice" onclick="check_year_event(); return false; "/> 
  </form>
 </div>

 <div id="show_description" >
  <?php echo $_GET['description']; ?>
 </div>

</div>
</body>
</html>

functions.php

<?php
 function hspacer($num_of_spaces) {
  $spaces = "";
  if ($num_of_spaces > 0)  for($i=0; $i<$num_of_spaces; $i++ )  $spaces .= "&nbsp;";

  return $spaces;
 }

 function vspacer($num_of_linefeeds) {
  $linefeeds = "";
  if ($num_of_linefeeds > 0)  for($i=0; $i<$num_of_linefeeds; $i++ )  $linefeeds .= "<br />";

  return $linefeeds;
 }
?>

myscripts.js

function create2DArray(row, col){
 var array2D = new Array(row);

 for (var i = 0; i < row; i++) {
  array2D[i] = new Array(col);
 }

 return array2D;
}


function check_year_event() {
 var years_and_events = create2DArray(10, 3);


 years_and_events[0][0] = 2001; 
 years_and_events[0][1] = "Karate Tournament"; 
 years_and_events[0][2] = "Annual karate tournament held globally"; 
 years_and_events[1][0] = 2002; 
 years_and_events[1][1] = "Beauty Pageant"; 
 years_and_events[1][2] = "Beauty pageant held globally"; 
 years_and_events[2][0] = 2003; 
 years_and_events[2][1] = "Film Festival"; 
 years_and_events[2][2] = "Film festival held globally"; 
 years_and_events[3][0] = 2004; 
 years_and_events[3][1] = "Singing Contest"; 
 years_and_events[3][2] = "Singing contest tournament held globally"; 
 years_and_events[4][0] = 2005; 
 years_and_events[4][1] = "Wedding"; 
 years_and_events[4][2] = "Wedding tournament held globally"; 
 years_and_events[5][0] = 2007; 
 years_and_events[5][1] = "Karate Tournament"; 
 years_and_events[5][2] = "Annual karate tournament held globally"; 
 years_and_events[6][0] = 2008; 
 years_and_events[6][1] = "Beaty Pageant"; 
 years_and_events[6][2] = "Beauty pageant held globally"; 
 years_and_events[7][0] = 2009; 
 years_and_events[7][1] = "Film Festival"; 
 years_and_events[7][2] = "Film festival held globally"; 
 years_and_events[8][0] = 2010; 
 years_and_events[8][1] = "Singing Contest"; 
 years_and_events[8][2] = "Singing contest tournament held globally"; 
 years_and_events[9][0] = 2011; 
 years_and_events[9][1] = "Wedding"; 
 years_and_events[9][2] = "Wedding tournament held globally"; 


 var year = document.getElementById('year_list').value;
 var event = document.getElementById('event_list').value;
 var found = false;

 for (var i = 0; i < years_and_events.length; i++) {
  if ((year == years_and_events[i][0]) && (event == years_and_events[i][1])) {
    document.getElementById('description').value = years_and_events[i][2];
    document.getElementById('send_notice').style.visibility = "hidden";
    document.getElementById('show_description').style.visibility = "visible";
    found = true;
    break;
   }
  }

 if (found == false) {
  document.getElementById('show_description').style.visibility = "hidden";
  document.getElementById('send_notice').style.visibility = "visible";
 }
}

You need to give the input a name. 您需要给输入一个名称。 So: 所以:

<input name="description" />

You would need to set the name of the <input type="hidden"> like <input type="hidden" name="hiddenfield"> 您需要设置<input type="hidden">的名称,例如<input type="hidden" name="hiddenfield">

Then you can reference this field in the PHP by $_GET['hiddenfield'] . 然后,您可以在PHP中通过$_GET['hiddenfield']引用此字段。 Make sure the input is in the form. 确保输入的格式正确。

You need to give your input a name, an id or both: <input type="hidden" id="foo"> 您需要输入一个名称,一个ID或同时<input type="hidden" id="foo">两者: <input type="hidden" id="foo">

A few side notes... 一些注意事项...

There's a very useful javascript library that you might want to try: 您可能想尝试一个非常有用的javascript库:

http://jquery.com/ http://jquery.com/

It comes with multitudes of UI elements and plugins, and allows to do many things in a much simpler way than what you're currently writing. 它带有大量的UI元素和插件,并且允许以比您当前正在编写的更加简单的方式执行许多操作。

You might also want to document yourself a bit on SQL injections, cross-site scripting and cross-site request forgery. 您可能还想对SQL注入,跨站点脚本编写和跨站点请求伪造有所记录。 A lot of stuff needs to be escaped in your code. 您的代码中需要转义很多东西。

Inside the show_description div replace $_GET['description'] with $description. 在show_description div中,将$ _GET ['description']替换为$ description。

EDIT: I think I understand why you are confused now. 编辑:我想我明白你为什么现在感到困惑。 If you want to display the value of the description input in the show_description div, you need to use javascript to do that. 如果要在show_description div中显示描述输入的值,则需要使用javascript来完成。 PHP is server side and it only runs once, when the page is requested by the browser. PHP是服务器端的,当浏览器请求页面时,它仅运行一次。 If you are doing anything that happens after the page is loaded, you need to use javascript. 如果您正在执行页面加载后发生的任何事情,则需要使用javascript。 That said, make this change to your check_year_event() function. 就是说,对您的check_year_event()函数进行此更改。

 for (var i = 0; i < years_and_events.length; i++) {
  if ((year == years_and_events[i][0]) && (event == years_and_events[i][1])) {
    document.getElementById('description').value = years_and_events[i][2];
    document.getElementById('show_description').innerHTML = years_and_events[i][2];
    document.getElementById('send_notice').style.visibility = "hidden";
    document.getElementById('show_description').style.visibility = "visible";
    found = true;
    break;
  }
 }

And remove the echo $_GET['description'] from the index.php file 并从index.php文件中删除echo $_GET['description']

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM