Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wywołanie funkcji z js za pomocą php
Forum PHP.pl > Forum > Przedszkole
laresistance
Witam.
Robię aplikację na Facebook
W aplikacji po zalogowaniu pyta o zezwolenie na publikację na wallu uzytkownika i nastepnie powinna wysoływać się funkcja publikujOdwiedziny opisana w kodzie poniżej.

błąd pewnie jest gdzieś w tej sekcji:

<? else : ?>
publikujOdwiedziny(tytul)

Ale nie wiem gdzie dokłądnie.
Prosze o pomoc

działąnie aplikacji można przetestować na e-area.pl

kod aplikacji php:
  1. <?php
  2. require('facebook.php');
  3.  
  4. $facebook = new Facebook(array(
  5. 'appId' => '341606939255273',
  6. 'secret' => 'c132c058acff615b748bbafdf2419fcc',
  7. 'cookie' => true,
  8. ));
  9.  
  10. $session = $facebook->getUser();
  11.  
  12. ?>
  13.  
  14. <!doctype html>
  15. <html>
  16. <head>
  17. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  18. <title>Aplikacja Poczatkowa</title>
  19. </head>
  20. <body>
  21. <div id="fb-root"></div>
  22. <script>
  23. window.fbAsyncInit = function() {
  24. // inicjalizacja JavaScript SDK
  25. FB.init({
  26. appId : '<? echo($facebook->getAppId()); ?>',
  27. session : <? echo(json_encode($session)); ?>,
  28. status : true,
  29. cookie : true,
  30. xfbml : true // włączamy parsowanie XFBML
  31. });
  32.  
  33. // jeśli użytkownik zaloguje się, odświeżamy stronę
  34. FB.Event.subscribe('auth.login', function() {
  35. window.location.reload();
  36. });
  37. };
  38.  
  39. (function() {
  40. var e = document.createElement('script');
  41. e.src = document.location.protocol + '//connect.facebook.net/pl_PL/all.js';
  42. e.async = true;
  43. document.getElementById('fb-root').appendChild(e);
  44. }());
  45.  
  46. (function publikujOdwiedziny(tytul) {
  47. FB.ui({
  48. method: 'stream.publish',
  49. attachment: {
  50. name: tytul,
  51. caption: "Zobacz gdzie własnie byłem i co odwiedzilem",
  52. media: [{
  53. type: 'image',
  54. href: 'http://e-area.pl/',
  55. src: 'http://e-area.pl/'
  56. }]
  57. },
  58. action_links: [{
  59. text: 'Zerknij sam!',
  60. href: 'http://e-area.pl/'
  61. }],
  62. user_message_prompt: 'Powiedz swoim znajomym o tym miejscu'
  63. });
  64. });
  65. </script>
  66. <center>
  67. <?php if ($me) : ?>
  68. Witaj, <? echo($me['first_name']); ?>
  69. <img src="https://graph.facebook.com/<? echo($uid); ?></picture">
  70. <? else : ?>
  71. <p>Aby korzystać z tej aplikacji musisz się zalogować</p><br />
  72. <fb:login-button perms="publish_stream"></fb:login-button><br><br>
  73. <? else : ?>
  74. publikujOdwiedziny(tytul)
  75. <? endif; ?>
  76.  
  77. <fb:title>Opowiedz o tych meijscach</fb:title><br><br>
  78. <br><br><fb:comments xid="titans_comments" canpost="true" candelete="false" returnurl="http://apps.facebook.com/myapp/titans/">
  79.  
  80.  
  81. </center>
  82. </body>
  83. </html>
nospor
if
else
else

Co to niby ma być? Przenosze na przedszkole bo masz problemy z podstawową składnią
laresistance
To akurat znalazłem w jakimś tutorialu na necie
nospor
Nie chce mi się wierzyć, że w tutoriali dali składnię:
if
else
else

Wielce prawdopodobne że coś źle przepisałeś lub wyjąłeś fragment z większej całości

A jeśli naprawdę tam jest
if
else
else
to już nigdy nie zaglądaj do tego tutoriala
laresistance
Tam był fragment tylko z jednym else ale z tego co przed chwilą spojrzałem na instrukcję na necie to faktycznie else wykonuje się tylko w przypadku niewykonania ifa więc powinno być elseif. Więc jeśli chcę by jedno wykonywało się po drugim powinienem zastosować if elseif else czyli powinno to wyglądać jakoś tak:

<?php if ($me) : ?>
Witaj, <? echo($me['first_name']); ?>
<img src="https://graph.facebook.com/<? echo($uid); ?></picture">
<? elseif(TRUE) : ?>
<p>Aby korzystać z tej aplikacji musisz się zalogować</p><br />
<fb:login-button perms="publish_stream"></fb:login-button><br><br>
<? else : ?>
publikujOdwiedziny(tytul)
<? endif; ?>
nospor
Przecież to jest nadal bezsensu.... dla ELSEIF dałeś TRUE wiec do ELSE nigdy nie dojdzie...
laresistance
Jeśli daję samo else if (bez wyrażenia w nawiasie) to mi podkreśla jako błąd w środowisku. to jak powinno być?

Co musze dodać w nawiasie else if?
!*!
Zacznijmy od podstaw: http://pl.wikibooks.org/wiki/PHP/Instrukcja_if
laresistance

if - wykonuje się, gdy spełniony został podany warunek
elseif - jeżeli nie został spełniony poprzedni warunek, PHP testuje aktualny i jeżeli jest prawdziwy, wykonuje ten kawałek kodu.
else - wykonywane, jeżeli żaden z powyższych warunków nie został spełniony.

idąc tym torem w swojej aplikacji mam 3 akcje:

1. sprawdzić czy użytkownik jest zalogowany. Jeśli tak pokazuje Witaj .... Jeśli nei przechodzi do warunku 2
2. Wyświetla panel do logowania wraz z pobraniem odpowiednich zezwoleń
3. Jeśli użytkownik jest zalogowany automatycznie wyrzuca informację na walla użytkownika. - funkcja publikujOdwiedziny

Czyli robię warunek
if
1
else
2
endif

teraz roizumiem musze sobie zrobić drugiego ifa:

if (zalogowany i jest zezwolenie na publikację) 3

Dobrze myślę?
nospor
Tak, teraz dobrze myślisz.
laresistance
To teraz pytanie za 100pky smile.gif
Jak mam wywoałać funkcję publikujOdwiedziny(tytul)?
Tzn jeśłi napiszę
if (warunek do spełnienia) "co tu ma być?"

Funkcje w php wywoływało się nazwa funkcji(parametr);
A jeśli ta funkcja jest w sekcji <script></script> jak w przykłądzie z pierwszego postu to jak ją wywoałać?
!*!
  1. if (warunek do spełnienia) "co tu ma być?"


Czytałeś link o instrukcjach warunkowych?
Najprościej i najprymitywniej:
  1. if()
  2. {
  3. echo '<script>alert();</script>';
  4. }

sobol6803
Wywal z 1 posta te kody aplikacji na FB, bo teraz każdy sobie może napisać skrypt do Twojej apki i pobrać dane użytkowników.
laresistance
sprawa zakończona smile.gif Można zamyklać
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.