Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl


Geston
Napisane: 9.04.2014, 18:53:51





Grupa: Zarejestrowani
Postów: 60
Dołączył: 29.11.2010
Skąd: T

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

Dobra bo tam napisałem tyle co mi się w oczy rzuciło ale to bzdura była.

  1. <?php
  2. $znaki = '1234567890qwertyuiopasdfghjkklzxcvbnm';
  3. $url = '';
  4.  
  5. for ($i=0; $i<7; $i++)
  6. {
  7. $url .= $znaki[rand()%(strlen($znaki))];
  8. }
  9.  
  10. echo 'http://www.banan.pl/url/' . $url;
  11. $file = $url . ".php";
  12. $sk = '<?php echo "<meta http-equiv=\"refresh\" content=\"1;url=' . $_POST['link'] . '\" />" ?>';
  13. #<meta http-equiv="refresh" content="1;url='$_POST['link'];" />
  14. $fp = fopen($file, "a");
  15. flock($fp, 2);
  16. fwrite($fp, $sk);
  17. flock($fp, 3);
  18. fclose($fp);
  19. ?>


$id = '', zła nazwa zmiennej, dalej używasz $url a z operatorem .= musi być ona wcześniej już "zainicjowana".
Dalej łączenie wartości zmiennych i stringów - w kilku miejscach błąd, poprawiłem.

  1. <form action="link.php" method="POST">
  2. <input type="text" name="link" />
  3. <input type="submit" name="ok" value="Ślij link!" />
  4. </form>


W formularzu musisz określić metodę wysyłania na post, domyślnie robi to przez get więc nie znajdziesz przesłanej wartości w $_POST.
  Forum: Przedszkole · Podgląd postu: #1101303 · Odpowiedzi: 4 · Wyświetleń: 486

Geston
Napisane: 10.04.2014, 13:26:36





Grupa: Zarejestrowani
Postów: 60
Dołączył: 29.11.2010
Skąd: T

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

Zakładając że masz taki input:

  1. <input type="hidden" name="title" value="" />


dodaj za nim:

  1. <script type="text/javascript">document.getElementsByName('title')[0].value = document.title;</script>


spowoduje to nadanie wartości atrybutowi value Twojego inputa o nazwie "title" na taką jaki tytuł posiada strona.
  Forum: Przedszkole · Podgląd postu: #1101425 · Odpowiedzi: 9 · Wyświetleń: 333

Geston
Napisane: 5.02.2014, 14:30:02





Grupa: Zarejestrowani
Postów: 60
Dołączył: 29.11.2010
Skąd: T

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

To już sam najlepiej wiesz jakie masz tabele oraz co i jak potrzebujesz z nich pobierać. Miłej zabawy.
  Forum: Przedszkole · Podgląd postu: #1089683 · Odpowiedzi: 12 · Wyświetleń: 423

Geston
Napisane: 5.02.2014, 14:22:38





Grupa: Zarejestrowani
Postów: 60
Dołączył: 29.11.2010
Skąd: T

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

Żeby było jeszcze ładniej to zrób jeszcze inaczej, bo ogólnie to komplikujesz sobie pracę, pobierasz dane z tabeli userID na podstawie nickname po to aby na podstawie userID pobrać kolejne dane z tej samej tabeli. Używając klasy możesz skrócić sobie pracę.

  1. <?php #class_User.php
  2.  
  3. // klasa User
  4.  
  5. class User {
  6.  
  7. private $userID;
  8. private $username;
  9. private $email
  10.  
  11. public function __construct($nickname = "") {
  12. // konstruktor
  13.  
  14. if ($nickname != "") {
  15. $ds = mysql_fetch_array(safe_query("SELECT userID, username, email FROM ".PREFIX."user WHERE nickname='".$nickname."'"));
  16. $this->userID = $sd['userID'];
  17. $this->username = $sd['username'];
  18. $this->email = getinput($sd['email']);
  19. }
  20. }
  21.  
  22. public function __get($arg) {
  23. // funkcja zwracająca wartości zmiennych
  24.  
  25. return $this->$arg;
  26. }
  27. }
  28.  
  29. ?>


i pliczek

  1. <?php
  2.  
  3. // dołączenie plików z definicjami klas
  4. require_once('../class_User.php');
  5.  
  6. $nickname = "admin" // tak czy inaczej pobrana wartość z formularza przypisana zmiennej nickname
  7.  
  8. // utworzenie obiektu klasy User
  9. $user = new User($nickname);
  10.  
  11. $id = $user->__get("userID");
  12. $username = $user->__get("username");
  13. $email = $user->__get("email");
  14.  
  15. ?>


Tworząc obiekt podajesz mu od razu nickname który pobrałeś czy to z formularza czy sam przypisałeś zmiennej. Konstruktor go przejmuje i z jego pomocą pobiera z bazy danych potrzebne pola od razu gdy tylko obiekt jest utworzony, nie trzeba wywoływać żadnych dodatkowych funkcji. Później tylko z pomocą funkcji __get() odwołujesz się do kolejnych zmiennych prywatnych w klasie.
  Forum: Przedszkole · Podgląd postu: #1089677 · Odpowiedzi: 12 · Wyświetleń: 423

Geston
Napisane: 5.02.2014, 14:15:08





Grupa: Zarejestrowani
Postów: 60
Dołączył: 29.11.2010
Skąd: T

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

  1. $_user->username['admin'];


Zmień na:

  1. $_user->username = "admin";
  Forum: Przedszkole · Podgląd postu: #1089671 · Odpowiedzi: 12 · Wyświetleń: 423

Geston
Napisane: 5.02.2014, 14:08:01





Grupa: Zarejestrowani
Postów: 60
Dołączył: 29.11.2010
Skąd: T

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

Zapomniałeś o " ()" po getID? To funkcja a nie zmienna.
  Forum: Przedszkole · Podgląd postu: #1089667 · Odpowiedzi: 12 · Wyświetleń: 423

Geston
Napisane: 5.02.2014, 13:54:47





Grupa: Zarejestrowani
Postów: 60
Dołączył: 29.11.2010
Skąd: T

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

Można to zrobić na kilka sposobów w zależności od tego do czego jeszcze będziesz używał tej klasy i jak.

Tak żeby robiła tylko to co wkleiłeś wyżej:

  1. <?php #class_User.php
  2.  
  3. // klasa User
  4.  
  5. class User {
  6.  
  7. public function __construct() {
  8.  
  9. }
  10.  
  11. public function getUserID($nickname) {
  12. $ds = mysql_fetch_array(safe_query("SELECT userID FROM ".PREFIX."user WHERE nickname='".$nickname."'"));
  13. return $ds['userID'];
  14. }
  15.  
  16. public function getUsername($userID) {
  17. $ds = mysql_fetch_array(safe_query("SELECT username FROM ".PREFIX."user WHERE userID='".$userID."'"));
  18. return $ds['username'];
  19. }
  20.  
  21. public function getUserEmail($userID) {
  22. $ds = mysql_fetch_array(safe_query("SELECT email FROM ".PREFIX."user WHERE userID='".$userID."'"));
  23. return getinput($ds['email']);
  24. }
  25. }
  26.  
  27. ?>


i w pliku

  1. <?php
  2.  
  3. // dołączenie pliku z definicjami klas
  4. require_once('../class_User.php');
  5.  
  6. // utworzenie obiektu klasy User
  7. $user = new User();
  8.  
  9. $id = $user->getUserID['jakis_login'];
  10.  
  11. ?>
  Forum: Przedszkole · Podgląd postu: #1089664 · Odpowiedzi: 12 · Wyświetleń: 423

Geston
Napisane: 4.02.2014, 22:45:50





Grupa: Zarejestrowani
Postów: 60
Dołączył: 29.11.2010
Skąd: T

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

Koniecznie musisz użyć case? Nie wiem czy możliwe jest użycie w tym miejscu pętli for, nigdy czegoś takiego nie widziałem, ale zamiast kombinować może lepsze będzie coś takiego:

  1. <?php
  2.  
  3. $ilosc = 3;
  4. $a = 2;
  5.  
  6. for ($i = 0; $i < $ilosc; $i++) {
  7. if ($i == $a) echo $i;
  8. }
  9.  
  10. ?>
  Forum: Przedszkole · Podgląd postu: #1089562 · Odpowiedzi: 4 · Wyświetleń: 204

Geston
Napisane: 4.02.2014, 19:10:31





Grupa: Zarejestrowani
Postów: 60
Dołączył: 29.11.2010
Skąd: T

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

W php generujesz nowe pole input - ukryte w formularzu przypisując "nazwie_zmiennej" - "wartość" którą pobrałeś z x.html

  1. <input type="hidden" name="nazwa_zmiennej" value="wartosc" />


Wada jest taka że ktoś może Ci podstawić formularz i wysłać z inną wartością do ostatniej strony, dlatego musisz się zabezpieczyć w odpowiedni sposób - dodatkowa walidacja treści.
  Forum: Przedszkole · Podgląd postu: #1089501 · Odpowiedzi: 3 · Wyświetleń: 259


New Posts  Nowe odpowiedzi
No New Posts  Brak nowych odpowiedzi
Hot topic  Popularny temat (Nowe)
No new  Popularny temat (Brak nowych)
Poll  Sonda (Nowe)
No new votes  Sonda (Brak nowych)
Closed  Zamknięty temat
Moved  Przeniesiony temat
 

RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 15:33