Кажется, у меня странное происшествие. Если я поставлю флажок в форме, тогда скрипт php отлично работает. Если я не проверю флажок, то php сообщает о неопределенном индексе для другой переменной.
Это использует локальный хост IIS, проверяя вещи.
В Интернете опубликованный идентичный скрипт работает независимо от того, что. Ну, практически одинаковые. Я локально добавил переменную «test» POST-ed в php и сравнивал с жестко закодированным значением. Это все.
Вот html для флажка:
<tr> <td>Publish Comment?</td> <td><input name="publishok" value="NO" type="checkbox"> Check Box For Do spanstyle="font-weight: bold;">Not</span> Publish</td> </tr> <tr>
и вот php для переменной, 'publishok':
$IP = $_SERVER["REMOTE_ADDR"]; $publishok = $_POST['publishok']; $test = $_POST['test']; if ($test != 'park') die ("Wrong input. Sorry. Go back, try again");
Я подозревал, что мой редактор PSPad добавлял ложные (и невидимые) коды символов или что-то еще, поэтому я обновился до последней версии. Нет разницы.
Не могу подумать, что может вызвать это.
Может ли кто-нибудь помочь?
флажок не будет отправлять данные на сервер, если вы его не проверили.
Вы должны использовать isset($_POST['publishok'])
чтобы проверить, проверено ли оно на стороне сервера.
Это происходит потому, что данные флажка не отправляются на сервер, если он не установлен. Немного взломать это – использовать скрытое поле ввода с тем же именем перед флажком, поэтому, если флажок снят, это значение будет отправлено вместо этого.
<input name="publishok" value="0" type="hidden"> <input name="publishok" value="NO" type="checkbox">
Я полагаю, что флажки и переключатели не отправляют данные get / post, если не выбраны / отмечены (вы можете проверить это, выполнив var_dump / print_r на $ _GET / $ _ POST), поэтому вы должны сделать что-то вроде:
if(isset($_POST['publishok'])){ $publishok = $_POST['publishok']; }else{ $publishok = "";#default value }