php
2015-01-11 2 views 0 likes 
0

Когда функция Javascript называется - show_picture() - от sprintf() он счастливо работает (код ниже):Проблемы с вызовом функции PHP из Sprintf()

$user_row = sprintf("<a href='javascript:show_picture(%d);'> " . 
"<img src='images/missing_user.png' width='15' /></a> ", $user['user_id']); 

Когда функция PHP называется - show_user_func() - от sprintf() не работает. Сообщение об ошибке:

The requested URL /show_user_func(168); was not found on this server. 

Код:

sprintf("<a href='show_user_func(%d);'>%s %s</a> ", 
      $user['user_id'], $user['first_name'], $user['last_name']); 

Там, вероятно, простое объяснение для этого, но в настоящее время он избегает меня. У кого-нибудь есть идеи?

+2

Вы не можете вызвать функцию PHP из ссылки HTML, если вы не потребуете другую страницы с этой ссылкой, и эта страница запускает функцию PHP. –

+0

Спасибо за это Александр. Когда я реализовал решение, приведенное ниже, функция была вызвана, не дожидаясь щелчка ссылки. Значит, вы правы. – havelly

ответ

3

Функции PHP не являются URL-адресами. Вы не можете просто вызвать функцию, такую ​​как URL. Вы можете создать страницу, которая вызывает эту функцию, используя любые данные, которые вы указываете в URL-адресе (возможно, в строке запроса).

Просто, чтобы объяснить, почему это было бы действительно плохая идеяTM, чтобы пользователи могли называть PHP функции как URL, рассмотрим это (к счастью нерабочим) гиперссылка:

<a href="array_map('unlink', './');">...</a> 

Пользователь, может легко добавить это или просто непосредственно посетить URL http://example.com/array_map('unlink', './'). Если то, что вы пытаетесь сделать, было возможно, вышесказанное могло бы уничтожить ваш сайт.

EDIT: Если вы просто пытаетесь вывести значение из show_user_func($user['user_id']) и использовать его в качестве ссылки, просто сделать это:

sprintf("<a href='" . show_user_func($user['user_id']) . ";'>%s %s</a> ", 
     $user['first_name'], $user['last_name']); 

Я не совсем уверен, почему вы могли бы сделать что, поскольку вы не дали нам много времени, но, похоже, это может быть то, что вы ищете.

EDIT 2: На основе комментариев вы хотите запустить функцию PHP, когда пользователь нажимает ссылку на вашей странице. Это возможно, но не так, как вы это делаете. Вам нужно использовать AJAX. Я бы предложил искать Google для «AJAX» и прочитать некоторые учебники для начала.

+0

Спасибо за это. Вышеупомянутое решение наполовину работает (если это возможно)! Функция вызывается без ожидания щелчка ссылки. Кажется, что я пытаюсь сделать, это невозможно. – havelly

+0

PHP является серверным; он всегда будет вызываться до того, как пользователь увидит страницу. Тем не менее, вы можете делать то, что хотите, с AJAX. Я предлагаю вам искать AJAX и читать некоторые учебники, чтобы вы начали. –

0

попробуйте использовать как:

<a href="show_user_func.php">Username</a>//your code resides in show_user_func.php 

PHP это язык на стороне сервера, поэтому он недоступен для HTML, как, как вы делаете. JavaScript может сделать это, так как это клиентский язык сценариев.

увидеть более аналогичную должность: Calling a PHP function within an <a > tag, anchor tag

0
$user_row = sprintf("<a href='" . show_user_func(%d) . "'>%s %s</a> ", 
Смежные вопросы