• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Не сложный скрипт на php, но работает не корректно

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Насколько я понимаю результат должен появлятся в новом окне. На практике, внизу текущего окна появляется строка "Результат Вашего действия равен" и всё. У меня почему-то такое ощущение, что при выполнения скритпа, функция calc() не отрбатывается вообще.
Вот листинг.
Код:
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> 
<title>Calculator</title> 
</head> 
<body> 
<? 
 function show() 
  { 
  global $action; 
  ?> 
 <FORM metod=Get action="calc.php" target "_blank"> 
 Первое число 
 <input type="text" name="first"> 
 Второе число 
<input type="text" name="second"> 
<select size="1" name="action"> 
 <option value="sum">Сложить</option> 
 <option value="min">Вычесть</option> 
 <option value="mult">Умножить </option> 
 <option value="dev">Разделить</option> 
 <option value="stepen">Возвести в степень</option> 
 <option value="procent">Процент от числа</option> 
 <option value="koren">Корень</option> 
</select> 
<br><input type="submit" value="Выполнить"> 
</form> 
<? 
}    
function calc() 
{ 
global $action, $result, $first, $second; 
switch($action) 
{ 
 case "sum": $result = $first+$second; break; 
 case "min": $result = $first-$second; break; 
 case "mult": $result = $first*$second; break; 
 case "dev": 
 if (!$second)      
 { 
  exit("Неверное значение второго аргумента"); 
 } 
 $result=$first/$second; break; 
 case "procent": $result = $first*($second/100); break; 
 case "stepen": $result = pow($first, $second); break; 
 case "koren": $result = pow($first,0.5); break; 
} 
?> 
Результат Вашего действия равен <b> 
<? echo $result; ?> 
</b> 
<? 
}           

if ($action) calc(); else show(); 
?> 
</body> 
</html>

Не работает.
 
B

Belfisher

Вот так попробуй написать :)
Код:
if (isset($action)) {
calc(); 
}
else {
show();
}
 
I

impullz

а еще пхп могет ругаться на сокращенную запись открывающего тега....
проверь настройки сервера, если все-таки решил использовать их..
 
I

impullz

Belfisher прав не спорю....
но ты знаешь у меня твой код ваще отказался работать ссылаясь на:


Notice: Undefined variable: result in x:\home\localhost\www\theone.php on line 21
на имена файлов и номера строк не обращай внимания...просто переменная не определена...
 
A

admin

Guest
сли у тебя register_globals =off то у тебя $action пустая.


надо писать везде так: $_GET['action']
например:
if ($_GET['action']) calc(); else show();

тоже самое с другими переменными


PS: если данные будешь POSTом передавать, то : $_POST['action']

и проверь в php.ini
Код:
; Allow the <? tag. Otherwise, only <?php and <script> tags are recognized. 
short_open_tag = On
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!