Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Przekierowanie strony
Durkane
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

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


Witam... Mam taki problem (szukam i szukam i nic nie mogę znaleźć, aby odpowiadało temu co chce).

Mam kod php
  1. if (!isset $id)
  2. {
  3. $id = time (7 * 24 * 60 * 60);
  4. header('Location: <a href="http://localhost/~cos/gra.php'.$id);" target="_blank">http://localhost/~cos/gra.php'.$id);</a>
  5. }


Teraz chce zrobić tak żeby moja strona gra tworzyła się np. tak "http://localhost/~cos/gra.php?id=481812731". Z tego co wiem muszę sprawdzić czy moja strona zawiera to "?id=481812731" tyle,że nie wiem jak dokładnie to sprawdzić... I jak zadeklarować to $id przed IF.

Czy to będzie coś w stylu
if (isset header('Location: http://localhost/~cos/gra.php'.$id)
{
}

questionmark.gif
Dziękuje za pomoc smile.gif
Go to the top of the page
+Quote Post
bobek358
post
Post #2





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


  1. if (isset($_GET['id']) && !empty($_GET['id']))
  2. {
  3. // kod
  4. }
Go to the top of the page
+Quote Post
Durkane
post
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

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


Ahh.. no tak zapomniałem o $_GET biggrin.gif Ale mimo to i tak generuje się tylko "http://localhost/~cos/gra.php". I teraz jeszcze muszę poradzić sobie z błędem, który wytwarza wstawienie tego tongue.gif
Go to the top of the page
+Quote Post
bobek358
post
Post #4





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Ponieważ masz zapis:

  1. $id = time (7 * 24 * 60 * 60);
  2. header('Location: <a href="http://localhost/~cos/gra.php'.$id);" target="_blank">http://localhost/~cos/gra.php'.$id);</a>


a winno być

  1. $id = time (7 * 24 * 60 * 60);
  2. header('Location: http : / / localhost/~cos/gra.php?id='.$id);


Celowo dodałem spacje w http:// bo bbcode forum zamianiał to na link.

Ten post edytował bobek358 6.08.2015, 07:42:36
Go to the top of the page
+Quote Post
Durkane
post
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

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


O to właśnie chodzi, że jak zrobię
  1. $id = time (7 * 24 * 60 * 60);
  2. header('Location: http : / / localhost/~cos/gra.php?id='.$id');


To po prostu jest http : / / localhost/~cos/gra.php, a jak zmienię bez "?id=" to generuje mi liczby tylko nie znajduję strony.
I time zmieniłem na rand() bo przy time ciągle te same liczby są.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
bo przy time ciągle te same liczby są.
Bo jak ktos nie potrafi skopiowac kodu z manuala to co sie dziwic....
time() + (7 * 24 * 60 * 60);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Durkane
post
Post #7





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

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


Cytat(nospor @ 6.08.2015, 08:46:42 ) *
Bo jak ktos nie potrafi skopiowac kodu z manuala to co sie dziwic....
time() + (7 * 24 * 60 * 60);


Niestety nie kopiowałem, a pisałem z głowy, a jestem na poziomie podstawowym z tego, więc zdarzają się błędy tego typu smile.gif I w dalszym ciągu nie wstawia "?id=".
Bo zamysł ogólnie jest tego taki żeby generować właśnie takie id strony, które potem wstawiane jest do ciasteczka(tzn. np. $_COOKIES(Random_$id)), które przechowuje liczbę oraz próby, żeby po wyłączeniu strony i włączeniu próby były na 0, a liczba jakaś nowa smile.gif


Dobra zrobiłem, że dodaje "?id=" tylko nie wykonuje mi reszty kodu niestety : /

Ten post edytował Durkane 6.08.2015, 08:06:35
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
I w dalszym ciągu nie wstawia "?id=".
Gdyż moja poprawka nie robila nic z ?id. Ja tylko ci napisalem jak pisac by time "dzialalo"

Cytat
Niestety nie kopiowałem, a pisałem z głowy,
Kod był bardzo podobny do tego co w manualu, nawet odstepy, wiec tak jakos mi sie skojarzylo... wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Durkane
post
Post #9





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

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


Staram się tak robić biggrin.gif Już wstawianie ?id= działa poprawnie smile.gif Jednak teraz mam inny problem smile.gif Otóż po wpisaniu liczby i zatwierdzeniu przyciskiem generuje mi nowe id dla strony... A ma pozostać niezmienione, aż do wyłączenia strony. I po zatwierdzeniu przyciskiem pojawia mi się takie coś "<br%20/><b>Notice</b>:%20%20Undefined%20variable:%20hash%20in%20<b>C:\WebServ\httpd-users\cos\gra.php</b>%20on%20line%20<b>80</b><br%20/>" przy "?id=" zamiast numeru normalnego.

Wstawiam pełny kod

  1. <?php
  2. error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
  3.  
  4.  
  5.  
  6. if (!isset($_GET['id']))
  7. {
  8. $hash = time() + (7 * 24 * 60 * 60);
  9. }
  10. else
  11. {
  12.  
  13. $Number = (string)$_POST["text"];
  14.  
  15. if(isset($_POST["submit"]))
  16. {
  17. if ($Number == null)
  18. {
  19. $Num3 = "Wprowadz liczbe! ";
  20. }
  21. else
  22. {
  23. if(isset($_SESSION["Trials"]))
  24. {
  25. $_SESSION["Trials"]+=1;
  26. }
  27. else
  28. {
  29. $_SESSION["Trials"] = 1;
  30. }
  31. }
  32. }
  33.  
  34. if(!isset($_SESSION["Trials"]))
  35. {
  36. $_SESSION["Trials"] = 0;
  37. }
  38. if(isset($_COOKIE["Random_$hash"]))
  39. {
  40. if(isset($_POST["submit"]))
  41. {
  42. if ($_COOKIE["Random_$hash"] > $Number)
  43. {
  44. $Kom1 = "Podana liczba jest za mala. Sprobuj jeszcze raz!";
  45. $Ses1 = "Liczba, ktora podales :".$Number;
  46. $Ses2 = "Proby : ".$_SESSION["Trials"];
  47. }
  48. elseif ($_COOKIE["Random_$hash"] < $Number)
  49. {
  50. $Kom1 = "Podana liczba jest za duza. Sprobuj jeszcze raz!";
  51. $Ses1 = "Liczba, ktora podales :".$Number;
  52. $Ses2 = "Proby : ".$_SESSION["Trials"];
  53. }
  54. elseif ($_COOKIE["Random_$hash"] == $Number)
  55. {
  56. $Kom1 = " Gratulacje odgadles liczbe ! ";
  57. $Kom1 .= " Zagraj jeszcze raz ! ";
  58. $Ses2 = "Proby : ".$_SESSION["Trials"];
  59. session_destroy();
  60. setcookie("Random_$hash","");
  61. $Guess = 1;
  62. }
  63. }
  64. }
  65. else
  66. {
  67. $Draw= rand(1,100);
  68. setcookie("Random_$hash",$Draw);
  69. }
  70. }
  71. ?>
  72.  
  73. <html>
  74. <head></head>
  75. <body>
  76. <div style="text-align:center; width:100%; border: 2px black solid">
  77. <h3>Odgadnij Liczbe od 1 do 100</h3>
  78. <form action ="gra.php?id=<?php echo $hash ?>" method ="POST">
  79.  
  80. <div style ="color:green">
  81. <?php if(isset($Ses1)): ?>
  82. <p><?= $Ses1; ?></p>
  83. <?php endif ?>
  84. <?php if(isset($Ses2)): ?>
  85. <p><?= $Ses2; ?></p>
  86. <?php endif ?>
  87. <?php if(isset($Kom1)): ?>
  88. <p><?= $Kom1; ?></p>
  89. <?php endif ?>
  90. </div>
  91.  
  92. <?php if(isset($Num3)): ?>
  93. <p style ="color:red;"><?= $Num3; ?></p>
  94. <?php endif ?>
  95.  
  96. <br>
  97. <input type="text" name="text">
  98. <br><br>
  99. <?php if (!isset($Guess)): ?>
  100. <input type="submit" value="Wyslij" id="submit" name="submit">
  101. <?php else: ?>
  102. <input type="submit" action ="gra.php?id=<?php echo $hash ?>" value="Zagraj jeszcze raz!" id="submit" name="submit"
  103. <?php endif ?>
  104. <br><br>
  105. </form>
  106. </div>
  107. </body>
  108. </html>


Ten post edytował Durkane 6.08.2015, 09:07:58
Go to the top of the page
+Quote Post
bobek358
post
Post #10





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Jeśli wchodzisz na stronę z id=jakies_id to pomijasz
  1. if (!isset($_GET['id']))
  2. {
  3. $hash = time() + (7 * 24 * 60 * 60);
  4. header('Location: http:// localhost/~cos/gra.php?id='.$hash);
  5. }


później już nigdzie tej zmiennej nie generujesz i przez to wywala że nie przypisałeś wartości do zmiennej hash.

Powinno być tak:

  1. if (!isset($_GET['id']))
  2. {
  3. $hash = time() + (7 * 24 * 60 * 60);
  4. header('Location: http:// localhost/~cos/gra.php?id='.$hash);
  5. }
  6. else
  7. {
  8. $hash = $_GET['id'];


Ten post edytował bobek358 6.08.2015, 10:09:05
Go to the top of the page
+Quote Post
Durkane
post
Post #11





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

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


Bardzo dziękuję za pomoc smile.gif Sądziłem, że jak doda już liczbę do "?id=" to będzie ją pamiętał i przypisywał, a tu takie coś ;d No nic człowiek uczy się całe życie smile.gif
Resztę błędów już sam wyeliminowałem tongue.gif

Jeszcze raz dziękuje serdecznie za pomoc. smile.gif
Go to the top of the page
+Quote Post
bobek358
post
Post #12





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


PHP to nie C# czy C++ - dane musisz jakoś przekazywać między wywołaniami stron do tego masz właśnie post, get session itp.
Go to the top of the page
+Quote Post
grzes999
post
Post #13





Grupa: Zarejestrowani
Postów: 305
Pomógł: 29
Dołączył: 5.07.2011

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


Cytat(bobek358 @ 6.08.2015, 11:29:45 ) *
PHP to nie C# czy C++ - dane musisz jakoś przekazywać między wywołaniami stron do tego masz właśnie post, get session itp.

Troszkę odgrzebię temat; ale co miałeś na myśli formując to stwierdzenie?
Go to the top of the page
+Quote Post
bobek358
post
Post #14





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Z tego co pamiętam (ale może mnie pamięć mylić bo lata już w C# nic nie robiłem), to jak deklarowałeś zmienną w programie to istniała dopóki działał program.
W PHP zmienna istnieje tylko w trakcie przetwarzania żądania, aby ją mieć na innej podstronie trzeba ją przekazać w jakiś sposób.
Go to the top of the page
+Quote Post
grzes999
post
Post #15





Grupa: Zarejestrowani
Postów: 305
Pomógł: 29
Dołączył: 5.07.2011

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


Cytat(bobek358 @ 14.08.2015, 11:34:02 ) *
Z tego co pamiętam (ale może mnie pamięć mylić bo lata już w C# nic nie robiłem), to jak deklarowałeś zmienną w programie to istniała dopóki działał program.
W PHP zmienna istnieje tylko w trakcie przetwarzania żądania, aby ją mieć na innej podstronie trzeba ją przekazać w jakiś sposób.


No nie do końca, sesje stosuje się dlatego, że protokół HTTP jest protokołem bezstanowym i nie ma możliwości sprawdzenia co było wcześniej, sam język nie ma nic do tego
Go to the top of the page
+Quote Post
bobek358
post
Post #16





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Ok jedno wynika z drugiego tongue.gif
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 Aktualny czas: 21.08.2025 - 21:06