Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Błąd 405 Not Allowed
Forum PHP.pl > Forum > Przedszkole
NaVarion
Hej, otóż piszę sobie skrypt, i nagle pokazuje mi się błąd:

405 Not Allowed
nginx/0.5.33

Jak mogę to naprawić?
behu
Najlepiej pokaż ten skrypt, bo tak ciężko cokolwiek doradzić.

Spróbuj wyczyścić cache i ciasteczka, i zobacz też czy na innej przeglądarce się to pokazuje.

Może w skrypcie mylisz metodę POST z GET, albo odwołujesz się do nieprawidłowego URI.
NaVarion
Wyczyściłem ciasteczka z tej strony, ale żeby mieć dostęp do tego trzeba się zalogować, więc po zalogowaniu się spróbowałem i to samo. W przeglądarce IE (na codzień korzystam z Firefox) to samo.
Skrypt jest troszkę długo, a propo jestem słaby trochę w php, może ktoś mi pomoże to zoptymilizować? tongue.gif

  1. <?php
  2. require("include/head.php");
  3.  
  4. if(!$_GET['action']) {
  5. echo 'Witaj, tu możesz zmienić ustawienia profilu.<br><br>
  6. <table>
  7. <form method="POST" action="konto?action=edytuj">
  8. <tr>
  9. <td>Imię:</td><td><input type="text" name="imie" value="'.$user['imie'].'"></td>
  10. </tr>
  11. <tr>
  12. <td>Nazwisko:</td><td><input type="text" name="nazwisko" value="'.$user['nazwisko'].'"></td>
  13. </tr>
  14. <tr>
  15. <td>Zawód: </td><td><input type="text" name="zawod" value="'.$user['zawod'].'"></td>
  16. </tr>
  17. <tr>
  18. <td>Data urodzenia:</td>
  19. <td>
  20. <select name="d1">
  21. ';
  22. $dz = '0';
  23. while($dz < '31') {
  24. $dz++;
  25. if($user['d1'] == $dz) {
  26. echo '<option selected=selected>'.$dz.'</option>';
  27. } else {
  28. echo '<option>'.$dz.'</option>';
  29. }
  30. }
  31. echo '
  32. </select> 
  33. <select name="d2">
  34. ';
  35. $mi = '0';
  36. while($mi < '12') {
  37. $mi++;
  38. if($user['d2'] == $mi) {
  39. echo '<option selected=selected>'.$mi.'</option>';
  40. } else {
  41. echo '<option>'.$mi.'</option>';
  42. }
  43. }
  44. echo '
  45. </select>
  46. <select name="d3">
  47. ';
  48. $rok = '1909';
  49. while($rok < '2003') {
  50. $rok++;
  51. if($user['d3'] == $rok) {
  52. echo '<option selected=selected>'.$rok.'</option>';
  53. } else {
  54. echo '<option>'.$rok.'</option>';
  55. }
  56. }
  57. echo '
  58. </select>
  59. </td>
  60. </tr>
  61. <tr>
  62. <td>
  63. Pokazuj adres email: 
  64. </td>
  65. <td>
  66. <input type="radio" name="email_pokaz" value="0"
  67. ';
  68. if($user['pokaz_email'] == '1') {
  69. echo 'checked="checked"';
  70. }
  71. echo '
  72. > Tak  <input type="radio" name="email_pokaz" value="1"
  73. ';
  74. if($user['pokaz_email'] == '0') {
  75. echo 'checked="checked"';
  76. }
  77. echo '
  78. > Nie
  79. </td>
  80. </tr>
  81. <tr>
  82. <td>
  83. O sobie:
  84. </td>
  85. <td><textarea name="o_sobie" cols="35" rows="10">'.$user['o_sobie'].'</textarea><br><span style="font-size: 9;">Porada: możesz używać znaków bbcode: [b], [i], [u] oraz [color]!</span></td>
  86. </tr>
  87. <tr>
  88. <td><input type="submit" value="Edytuj"></td>
  89. </tr>
  90. </form>
  91. </table>
  92. ';
  93. } elseif($_GET['action'] == 'edytuj') {
  94. $imie = $_POST['imie'];
  95. $nazwisko = $_POST['nazwisko'];
  96. $d1 = $_POST['d1'];
  97. $d2 = $_POST['d2'];
  98. $d3 = $_POST['d3'];
  99. $zawod = $_POST['zawod'];
  100. $o_sobie = $_POST['o_sobie'];
  101. $pokaz_email = $_POST['pokaz_email'];
  102. mysql_query("UPDATE users SET imie='$imie' WHERE id='$user[id]'");
  103. mysql_query("UPDATE users SET nazwisko='$nazwisko' WHERE id='$user[id]'");
  104. mysql_query("UPDATE users SET d1='$d1' WHERE id='$user[id]'");
  105. mysql_query("UPDATE users SET d2='$d2' WHERE id='$user[id]'");
  106. mysql_query("UPDATE users SET d3='$d3' WHERE id='$user[id]'");
  107. mysql_query("UPDATE users SET zawod='$zawod' WHERE id='$user[id]'");
  108. mysql_query("UPDATE users SET o_sobie='$o_sobie' WHERE id='$user[id]'");
  109. mysql_query("UPDATE users SET pokaz_email='$pokaz_email' WHERE id='$user[id]'");
  110. echo 'Zaktualizowano profil! (<a href="konto.php">Odswież</a>)';
  111. }
  112. require("include/foot.php");
  113. ?>
Maxik
Te 8 sql możesz zmieścić w jeden, np. UPDATE users SET `imie`='$imie', `nazwisko`='$nazwisko' WHERE id='$user[id]' Być może to było niedozwolone na Twoim hostingu.
NaVarion
Zmieniłem wszystkie zapytania na takie:

  1. <?php
  2. mysql_query("UPDATE users SET `imie`='$imie', `nazwisko`='$nazwisko', d1`='$d1', `d2`='$d2', `d3`='$d3', `zawod`='$zawod', `o_sobie`='$o_sobie', `pokaz_email`='$pokaz_email' WHERE id='$user[id]'");
  3. ?>


i wciąż ten sam błąd, zresztą w innym pliku mam to samo (pare UPDATE'ów pod rząd) i działa.

Jeszcze jakieś propozycje?
Maxik
Ciężko jest mi tu znaleźć błąd, poszukaj może jakaś pętla w określonych warunkach jest nieskończona, wykonuje się w nieskończoność.
SirZooro
Te 8 update'ów rzeczywiście warto było zoptymalizować wkładając je w jedno zapytanie, ale to nie powinno tutaj być problemem (co najwyżej przekroczyłbyś limit zapytań do bazy danych, ale to się objawia błędem bazy a nie błędem HTTP).

Kod 405 oznacza "Method not allowed" (niedozwolona metoda), i pojawia się w przypadku gdy serwer odmoawia obsługi danego typu żądania. Wygląda na to że masz gdzieś zablokowane wysyłanie formularzy przez POST. Sprawdź plik .htaccess - tam to może być blokowane.
NaVarion
Robię testy na yoyo.pl, a tam nie ma dostępu do htaccess
Może lepiej jest robić testy u siebie na kompie, na np. webserv?
SirZooro
Robienie testów na swoim kompie ma tą zaletę że jest szybsze i wygodniejsze, ale czy w tym konkretnym przypadku pomoże zlokalizować problem - nie wiem, musisz sprawdzić. Osobiście spodziewałbym się że na lokalnym komputerze wszystko może działać jak należy.
behu
a w linijce nr 6:
  1. <form method="POST" action="konto?action=edytuj">


nie powinno być tak?
  1. <form method="POST" action="konto.php?action=edytuj">



myślę, że to stanowi tutaj problem winksmiley.jpg
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.