Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Путем я сделал это, прежде чем в основном будет похож на то, что Вы записали, но не имеете никаких значений hardcoded:
if($_SERVER["HTTPS"] != "on") { header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]); exit(); }
Не смешивайте HTTP и HTTPS на той же странице. Если у Вас есть страница формы, которая подана через HTTP, я собираюсь быть озабоченным отправляющими данными - я не вижу, пробегается ли отправление через HTTPS или HTTP, не делая Источника Представления и ища для него.
Подавание формы по HTTPS наряду с отправлять ссылкой не состоит в том что тяжело изменение для преимущества.
Вы могли сделать это с директивой и mod_rewrite на Apache:
<Location /buyCrap.php>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</Location>
Вы могли сделать Местоположение более умным со временем использование регулярные выражения , если Вы хотите.
Использовать $_SERVER['HTTPS']
сказать, является ли это SSL и перенаправление к правильному месту если нет.
И помните, страница, которая отображает форму, не должна питаться через HTTPS, это - сообщение назад URL, которому нужен он больше всего.
Править: да, как указан ниже, лучше иметь весь процесс в HTTPS. Это намного больше заверяет - что я указывал, что сообщение является самой критической частью. Кроме того, необходимо заботиться, что любые cookie установлены быть безопасными, таким образом, они будут только отправлены через SSL. mod_rewrite решение также очень изящно, я использовал его для обеспечения большого количества приложений на моем собственном сайте.
Вы не были должны из соображений безопасности. Особенно, если cookie находятся в игре здесь. Это оставляет Вас широко открытыми для основанных на cookie атак с повторением пакетов.
Так или иначе, необходимо использовать правила управления Apache настроить его.
Затем можно протестировать на включаемый HTTPS и перенаправление по мере необходимости при необходимости.
необходимо перенаправить к странице платы только с помощью ФОРМЫ POST (не добираются), и доступы к странице без POST должны быть направлены назад к другим страницам. (Это поймает людей просто горячий переход.)
http://joseph.randomnetworks.com/archives/2004/07/22/redirect-to-ssl-using-apaches-htaccess/
Является хорошим местом для запуска, извинения за то, что не обеспечили больше. Но Вы действительно должны толчок все через SSL.
Это является защитным, но по крайней мере у Вас есть меньше забот.