Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][JavaScript] Unexpected token illegal
Terrorizer
post 16.12.2014, 21:39:11
Post #1





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


Zrobiłem sobie na stronie skrzynkę, żeby użytkownicy mogli kontaktować się między sobą.
Niektóre wiadomości nie chcą się otwierać. Otworzyłem konsolę i po kliknięciu w taką nieaktywną wiadomość wyskakuje "Uncaught SyntaxError: Unexpected token ILLEGAL".
Czytałem, że to może być wina js, ale przyczyn może być wiele. Wiadomości nie zawierały żadnych szczególnych znaków to były testowe wiadomości w stylu "asdasd"

Mam sporo kodu, jednak wrzucę, gdyby ktoś miał ochotę na to zerknąć.
  1. <div id="messagebox">
  2. <?php
  3. $nick = mysql_fetch_array(mysql_query('SELECT nick FROM users WHERE id = "'.$_SESSION['id'].'"'));
  4. $messages = mysql_query("SELECT * FROM msg WHERE receiver = '".$nick['nick']."' ORDER BY id DESC ");
  5. while($allmessages = mysql_fetch_assoc($messages)){
  6. $x = $allmessages['id'];
  7. $m = $allmessages['message'];
  8. $nickfetch = mysql_fetch_array(mysql_query("SELECT * FROM msg WHERE receiver = '".$nick['nick']."' AND id = '".$x."' "));
  9. $n = $nickfetch['sender'];
  10. $s = $allmessages['seen'];
  11. echo "<button class='my-button' id='".$x."' onClick=\"openmsg('$m','$n');seenupdate('$x')\">";
  12. echo "<div class='left'>" . substr($allmessages['message'],0,40) . " " . "..." . "</div>";
  13. echo "<div class='right'>" . $allmessages['date'] . " " . " " . " ";
  14. echo '<div class="nicklink"><a href="user.php?user=' . $allmessages['sender'] . '">' . $allmessages['sender'] .'</div>';
  15.  
  16. echo "</button>". "<br /> <br />";
  17. if ($s == "no"){
  18. echo "<script>
  19. $(document.getElementById(".$x.")).css('background-color', '#adff2f');
  20. $(document.getElementById(".$x.")).css('color', 'black');
  21. </script>
  22. ";
  23. }
  24. }
  25. ?>
  26. </div>


  1. <script>
  2. function openmsg(m,n) {
  3. $(document).ready(function(){
  4. document.getElementById("messagebox").innerHTML = "<div class='mes'>Wiadomość:<br />" + m + "<br /><br /><a href='mailbox.php' id='wstecz'><button>wstecz</button></a>" + "<a href='respond.php?user=" + n + "' id='wstecz'><button>odpowiedz</button></a></div>";
  5. });
  6. }
  7. </script>
  8.  
  9. <script>
  10. function seenupdate(x) {
  11. $.ajax({
  12. type : "POST",
  13. url : "messageseenupdate.php",
  14. data : {
  15. seen : "YES",
  16. id : x
  17. }
  18. });
  19. }
  20. </script>


EDIT: w konsoli błąd wskazuje mi na coś takiego:
  1. <script>(function() {with (this[2]) {with (this[1]) {with (this[0]) {return function(event) {openmsg('wiadomość wiadomość wiadomoooość
  2. ','KrolowaJadwiga');seenupdate('98')
  3. };}}}})</script>


Ten post edytował Terrorizer 16.12.2014, 21:58:43
Go to the top of the page
+Quote Post
mmmmmmm
post 17.12.2014, 07:13:44
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


w 13 lnii nie masz zamknięego <DIV>. Może to to.
Go to the top of the page
+Quote Post
Terrorizer
post 17.12.2014, 11:07:41
Post #3





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


Niestety nie pomogło, ale to też dobra uwaga, dzięki tongue.gif
Go to the top of the page
+Quote Post
trueblue
post 17.12.2014, 12:48:11
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Spróbuj podejrzeć treść wiadomości hexedytorem, czy nie ma jakichś nietypowych znaków.


--------------------
Go to the top of the page
+Quote Post
Terrorizer
post 17.12.2014, 14:12:59
Post #5





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


Nie wiem czy robię to poprawnie. Wystarczy, że skopiuję wiadomość z bazy i wkleję do hexeditora za pomocą edit>enter string?
Jeśli tak, to nie pokazuje nic nadzwyczajnego
Go to the top of the page
+Quote Post
trueblue
post 17.12.2014, 14:15:38
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Zrobiłbym backup tabeli "msg" do pliku i ten plik podejrzał.


--------------------
Go to the top of the page
+Quote Post
Terrorizer
post 17.12.2014, 14:33:33
Post #7





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


W treści tej wiadomosci, która nie chce się otworzyć jest dopisek "/r /n".
Wysłałem z ciekawości drugą taką samą i się otwiera normalnie, a hex już w niej tych znaków nie znajduje.
Teraz tylko pytanie, co z tym zrobić haha.gif?

edit: Chciałbym dodać, że nie używam żadnych "string escape". Właściwie, to niedawno się dowiedziałem o istnieniu czegoś takiego. Czy tu leży przyczyna?
edit2: Gdy wciskam enter w wiadomości, rzeczywiście przestaje się ona otwierać. Muszę się teraz nauczyć używać tego string escape, czuję, że to jest to

Ten post edytował Terrorizer 17.12.2014, 14:44:58
Go to the top of the page
+Quote Post
trueblue
post 17.12.2014, 17:33:21
Post #8





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Użyj json_encode na stringu wiadomości.


--------------------
Go to the top of the page
+Quote Post
Terrorizer
post 18.12.2014, 02:43:35
Post #9





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


Nie wiem czy to ma jakieś znaczenie, ale czy to powinno być zrobione przed zapisaniem stringu do bazy, czy po ściągnięciu stringu z bazy i odczytaniem już?

Dodając json_encode przed zapisaniem wiadomości do bazy zwyczajnie sprawia, że się ona nie zapisuje wcale:
  1. if (isset ($_POST['send']) ){
  2. include 'connect.php';
  3. $escapedmessage = json_encode($_POST["message"]);
  4. mysql_query('INSERT INTO msg (message, receiver, sender, date) VALUES ("'.$escapedmessage.'", "'.$_GET["user"].'", "'.$sendernick["nick"].'" ,"'.date("H:i | d-m-Y").'") ');
  5. }

Natomiast gdy dodaję to polecenie wypisując wiadomości z bazy, to już w ogóle żadna nie chce mi się otworzyć
  1. $m = json_encode($allmessages['message']);


Ten post edytował Terrorizer 18.12.2014, 02:43:56
Go to the top of the page
+Quote Post
Turson
post 18.12.2014, 07:36:39
Post #10





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Jeżeli json nie zapisuje się do bazy to z jakiejś konkretnej przycyzny. Masz ponad 250 postów to może wypadałoby wiedzieć jak wyświetlać błędy zapytań mysql. Masz podpowiedź w podwieszonym temacie
Go to the top of the page
+Quote Post
Terrorizer
post 18.12.2014, 19:06:38
Post #11





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


Niby tak, ale dodałem:
  1. ini_set('display_errors','1');
Oraz to:
Niestety niczego mi to nie wyświetla, jedynie przerywa skrypt.

Pomyślałem, że może gdzieś się schowała treść wiadomości, ale daję ctrl+a , wklejam całość strony w notatnik, ale nie ma żadnych errorów widocznych.

Ten post edytował Terrorizer 18.12.2014, 19:06:33
Go to the top of the page
+Quote Post
Turson
post 19.12.2014, 08:40:27
Post #12





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Co zwraca
  1. echo('INSERT INTO msg (message, receiver, sender, date) VALUES ("'.$escapedmessage.'", "'.$_GET["user"].'", "'.$sendernick["nick"].'" ,"'.date("H:i | d-m-Y").'") ');
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 04:34