Общий обзор:
У меня есть три страницы php:
- одна - это страница ввода данных , в которой есть текстовое поле, которое onkeydown изменяет URL-адрес iFrame,
- iFrame содержит страницу, которая ищет адреса электронной почты в базе данных LDAP и mySQL. При щелчке по результату поиска на страницу ввода данных добавляется отключенный текстовый ввод.
- и существует страница действия , которая получает информацию о форме и отправляет электронные письма.
Проблема заключается в том, что ни одна из данных формы не передается на страницу действия ни из статических элементов формы, ни из динамических, созданных JavaScript.
form.php
</p>
<pre><code><SCRIPT type="text/javascript">
// <!--
function delRecipient(object) {
var answer = window.confirm("Remove recipient?")
if (answer){
countChildren = object.parentNode.parentNode.childNodes.length;
oldName = "recipient" + countChildren;
newName = object.parentNode.id;
object.parentNode.parentNode.removeChild(object.parentNode);
document.getElementById(oldName).id = newName;
}
}
function iFrameHeight(id) {
var content_height=document.getElementById(id).contentWindow.document.body.scrollHeight;
document.getElementById(id).height=content_height;
document.getElementById(id).style.display='block';
}
function iFrameOpen(id) {
document.getElementById(id).style.display='block';
iFrameHeight(id);
}
function iFrameClose(id) {
var dt = new Date();
while ((new Date()) - dt <= 250) { /* Do nothing for 250 miliseconds. */ }
document.getElementById(id).style.display='none';
}
var selectNum=-1;
function iFrameSearch(e) {
var keynum;
var keychar;
var numcheck;
if(window.event) {
keynum = e.keyCode;
}
else if(e.which) {
keynum = e.which;
}
// Use up and down arrow keys to select recipient:
// Keynum 38 is the up arrow key,
// 40 is the down arrow key
// 13 is the enter key (for future use...)
if(keynum==38) { --selectNum; }
else if(keynum==40) { ++selectNum; }
else {
selectNum=-1;
}
keychar = String.fromCharCode(keynum);
keychar = keychar.replace(/([^- 'a-zA-Z])/gi,"");
document.getElementById('members').src='iframe.php?keyword=' + document.getElementById('search').value + keychar + '&select=' + selectNum;
iFrameHeight('members');
return false;
}
// -->
</SCRIPT>
<div class="content">
<form name="form" id="form" method="post" action="action.php">
<h3>Select Recipients</h3>
To:
<div id="recipients" class="recipients"></div>
<input type="text" id="search" class="search" autocomplete="off" onfocus="iFrameOpen('members'); iFrameHeight('members'); if(this.value=='Type name here to add a recipient...'||this.value=='Type name here to add another recipient...'){this.value='';}" onblur="if(this.value==''&&document.getElementById('recipients').getElementsByTagName('div').length>0){this.value='Type name here to add another recipient...';} else if(this.value==''){this.value='Type name here to add a recipient...';}" value="Type name here to add a recipient..." onkeydown="iFrameOpen('members'); iFrameSearch(event); iFrameHeight('members');" /><br>
<iframe src="" id="members" width="400" height="0" frameborder="0" scrolling="no" onmouseout="iFrameClose('members')" style="display: none; position:relative; top:0px; left:0px;"></iframe>
<input type="hidden" name="message" value="<?php $_REQUEST['var_from_previous_page'] ?>" />
<input type="submit" value="Send" />
</form>
</div>
iFrame.php
</p>
<pre><SCRIPT type="text/javascript">
// <!--
function newRecipient(name,email) {
var recipientNumber = parent.document.getElementById("recipients").childNodes.length++;
var recipient = document.createElement("DIV");
recipient.id = "recipient" + recipientNumber;
recipient.className = "recipient";
recipient.innerHTML = "<INPUT type=\"text\" name=\"recipient" + recipientNumber + "\" value=\"" + name + " <" + email + ">\" disabled=\"disabled\" /><div class=\"delete\" onclick=\"javascript:delRecipient(this)\"> </div>";
parent.document.getElementById("recipients").appendChild(recipient);
parent.document.forms[0].search.value = "";
parent.document.forms[0].search.focus();
parent.document.getElementById("members").style.display="none";
}
// -->
</SCRIPT>
<?php
// CUT-OUT A BUNCH OF IRRELEVANT PHP which searches the LDAP and mySQL databases, sorts, formats, etc.
echo "<TABLE cellspacing=\"0\" callpadding=\"0\" width=\"1000\">\n";
for ($i=0; $i<$returned; $i++) {
$row_type = ($i%2 == 0) ? "even" : "odd";
$select = $_REQUEST['select'] % $returned;
if($i == $select) { $row_type .= " selected"; $selected = true; }
else { $selected = false; }
$name = explode(" (",$info[$i]["cn"][0]);
$name_boldkeyword = nameCapitalize(str_ireplace(strtolower($_REQUEST['keyword']), "<b>" . strtolower($_REQUEST['keyword']) . "</b>", $name[0]));
$email_boldkeyword = strtolower(str_ireplace( $_REQUEST['keyword'], "<b>" . $_REQUEST['keyword'] . "</b>", $info[$i]["mail"][0]));
echo '<tr class="' . $row_type . '" onclick="newRecipient(\'' . addslashes(ucwords($name[0])) . '\',\'' . $info[$i]["mail"][0] . '\');"><td height="20" style="overflow: hidden;">' . ucwords($name_boldkeyword) . ' <' . $email_boldkeyword . "></td></tr>\n";
}
echo '<tr class="last"><td>Showing ' . $returned . ' of ' . $info["count"] . " entries.</td></tr>\n";
echo "</table>";
action.php
var_dump ($ _ REQUEST) содержит только сеансовые куки и рекламные куки. Нет переменных $ _POST.
Если вы поиграете с URL, он выведет добавленные вами переменные.