![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 17.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam :-).
Mam funkcję generującą hasła. Jej nazwa to mkPasswd(). Chciałbym, aby stworzone hasło zapisało mi w zmiennej. W tym celu:[php:1:f876710bcd]<?php $passwd = mkPasswd(); ?>[/php:1:f876710bcd] Nie wiedzieć dlaczego, ta jedna linijka wyświetla mi stworzone przez funkcję hasło tak jakbym wyprintował tą funkcję. Gdy chcę wyprintować w kilku miejscach kodu $passwd - zmienna nie posiada żadnej wartości. Co robię źle? |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
Zapodaj kod funkcji mkpasswd(),
bo coś mi zię wydaje, że tam zamiast return $haslo jest echo $haslo.... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 17.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
[php:1:331d86cd20]<?php
function mkPasswd() { $totalchar = "8"; $letters = array("1" => a, "2" => b, "3" => c, "4" => d, "5" => e, "6" => f, "7" => g, "8" => h, "9" => j, "10" => k, "10" => l, "11" => m, "12" => n, "13" => o, "14" => p, "15" => q, "16" => r, "17" => s, "18" => t, "19" => u, "20" => v, "21" => w, "22" => x, "23" => y, "24" => z); for ($i = 1; $i <= $totalchar; $i++) { $num_yon = (rand(0, 1)); $case_yon = (rand(0, 1)); if ($num_yon == "0") { if ($case_yon =="0") { $num = (rand(1, 24)); echo "$letters[$num]"; } else { $num = (rand(1, 24)); $temp = $letters[$num]; $numtd = strtoupper($temp); echo "$numtd"; } } else { $num= (rand(0, 9)); echo"$num"; } } } ?>[/php:1:331d86cd20] |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
Wiedziałem! Wiedziałem! Wiedziałem! (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)
Wszędzie, zamiast echo daj return. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) ![]() ![]() |
return chyba przerywa działanie funkcji. Daj to wszystko do jakiejś zmiennej lub tablicy a na końcu daj
[php:1:febd8f295f] <? return $zmienna; ?> [/php:1:febd8f295f] |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 2 Dołączył: 29.01.2004 Skąd: Rz-ów Ostrzeżenie: (0%) ![]() ![]() |
w tym wypadku jak nawet przerwie to nic sie niestanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) ![]() ![]() |
No w sumie racja, nie zagłębiałem się w kod, ale widzę, żę warunki wzajemnie się wykluczają, więc na jedno wykonanie funkcji może być tylko 1 echo. W takim wypadku wystarczy zamienić echo na return i powinno wszystko działać.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 17.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
A jednak nie... return zamiast każdego echo przerywało funkcję i w rezultacie hasło składało się tylko z jednego znaku.
Więc poszedłem za radą matid'a i dałem wszystko do jednej zmiennej ($zmienna .= "") zamiast echo. Na koniec skryptu return $zmienna; i teraz chodzi jak burza ;-). Dzięki za pomoc. |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
Tak mi właśnie przyszło do głowy, że z tymi echo też mogłoby działać. Trzeba by tylko zmienić przypisanie wartości zmiennej:
[php:1:d081103c59]<?php // zamiast $passwd = mkPasswd(); // trzeba by wstawić $passwd = sprintf("%s", mkPasswd()); ?>[/php:1:d081103c59] |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) ![]() ![]() |
Można też tak:
[php:1:226ca9c653] <? ob_start(); mkPasswd(); $passwd = ob_get_contents(); ob_end_clear(); ?> [/php:1:226ca9c653] ale jaki to ma sens jak można zmienić w funkcji :] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 09:58 |