эхо не отображает значение на странице - PullRequest
0 голосов
/ 16 января 2010

Я использовал «echo $ query», чтобы увидеть, получает ли он значение или нет, но ничего не показывает на странице. Как еще можно узнать, какую ценность он получает?

Я использую Aptana Studio 2.0 PDT, но не могу установить контрольные точки. Совершенно новый в этом.

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');

    $ulName = $_GET['ControlName'];
    $query = $_GET['SqlQuery'];
    echo $query;
    mysql_connect('localhost:3306','pffsddsf','dfsdfsd');
    mysql_select_db('publicdb');
    $result=mysql_query("select * from electioncategorymaster");
?>
<ul id="<?php echo $ulName; ?>" name="<?php echo $ulName; ?>">
<?php while($row=mysql_fetch_array($result))
{ ?>
    <li><?php echo $row[1]; ?></li>
<?php } ?>
</ul>

Ответы [ 6 ]

4 голосов
/ 16 января 2010

Возможно, вы не получаете ожидаемые параметры, поэтому запустите ваш скрипт с

var_dump($_GET);

чтобы увидеть, что на самом деле получает ваша страница.

Хотя я ценю, что вы только учитесь, принятие параметров, которые дословно передаются на сервер базы данных и в браузер клиента, - это защита нет-нет.

Возьмите переменную $ ulName - я могу добавить туда HTML по своему выбору, так почему бы не ограничить его буквенно-цифровыми цифрами?

if (preg_match('/[^a-z0-9_]/i',  $ulName)
    die("Invalid ControlName specified");

Что касается принятия SQL через параметр, я бы на самом деле этого не сделал, если бы вы полностью не доверяли пользователю своего приложения ...

?SqlQuery=DROP+DATABASE+publicdb

Страшно, верно? А как насчет того, чтобы объединить оба этих недостатка? Я мог бы создать ссылку, которая отображала бы вашу страницу, но встраивал форму со скрытыми полями, содержащими этот запрос, вдоль которой находилась большая кнопка с надписью «кликни мне, чтобы посмотреть смешные видео с кошками». Теперь мне просто нужно отправить ссылку туда и подождать, пока кто-нибудь другой сделает мои злые торги:)

1 голос
/ 16 января 2010

Это может показаться бесполезным, но вам также следует скопировать URL-адрес «примера», который вы используете.

PHP чувствителен к регистру (особенно когда речь идет о ключах массива), поэтому, во-первых, я бы проверил, что вызываемый вами URL использует правильный регистр, когда дело доходит до параметров GET.

1 голос
/ 16 января 2010

попробуйте это:

var_dump($query);
exit;

и посмотри, что происходит.

1 голос
/ 16 января 2010

Попробуйте var_dump($query); (также сообщит / покажет пустые строки)

Если ваша страница полностью пуста, загляните в ваш apache (или веб-сервер по вашему выбору), также могут быть полезны журналы ошибок.

0 голосов
/ 16 января 2010

сначала: включить ведение журнала ошибок, а также войти в файл журнала.

error_reporting(E_ALL);
ini_set('display_errors','On');

Вы можете попробовать, если ваша регистрация ошибок работает, выполнив следующее:

error_log("This Error should be displayed!", 0);

подробнее об обработке ошибок и регистрации на сайте php.net: http://www.php.net/manual/en/book.errorfunc.php

0 голосов
/ 16 января 2010

Когда этот простой метод не показывает какое-либо значение, возникает естественный вопрос: «Работает ли эхо или нет значения для отображения?»

Некоторое время назад я делал нечто подобное, но вместо использования echo я использовал

printf("[%s]", $query);

Таким образом, я мог видеть пустое [], когда не было возвращено значение $_GET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...