Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kolejny mam dziś problem...
Forum PHP.pl > Forum > Gotowe rozwiązania
patrycjusz
Najpierw słowo wstępu... - czytałem manuala na ten temat o który pytam... ale niestety jeszcze chyba zbyt "mały" jestem żeby zrozumieć rzeczy które tam są, tak więc najpierw kawałek logujący[php:1:7a45fd65dd]
<?php
include ("plik1.php");
if(isset($log) && isset($pass)){
if($log == $_POST['login'])
{
if($pass == $_POST['password'])
{
session_start();
session_register('log');
session_register('pass');
header('location: bobo.php?'.SID);
print "jest ok";
exit();
} else {
echo 'Nieprawidlowe dane!'; }
}
}
?>
<FORM method="POST" action="<?php echo $PHP_SELF?>">
Login:<INPUT type='text' class='login' name='login'>
Haslo:<INPUT type="password" class="password" name="password">
<INPUT type="submit" value="ok"></td></tr>
</FORM>
?>[/php:1:7a45fd65dd]
i teraz kawałek includującego się pliku a dokładnie...
[php:1:7a45fd65dd]
<?phpfunction uzytkownicy(){
global $log,$pass;
$wynik = mysql_query("SELECT login,haslo FROM uzytkownicy");
$rekord = mysql_fetch_array($wynik);
$log = $rekord[0];
$pass = $rekord[1];
}
uzytkownicy();
?>[/php:1:7a45fd65dd]
no i teraz pytanie pierwsze
- jak zrobić aby wszystkie rekordy zapisane w bazie były przypisywane
do zmiennych (przepraszam jeżeli napisałem coś dziwnego - jeszcze raczkuję w php) a dokładniej chodzi mi o funkcję która zwróci wszystkie wartości dla określonej kolumny np. haslo?
- opiszę problem też tak... działa mi tylko jeden login i hasło które są pierwszymi rekordami w bazie,
- i pytanie troszeczkę inne gdy jako plik includujący się był plik tekstowy z tylko zapisanymi zmiennymi to było ok a teraz wywala mi takie błędy...
Kod
Warning: Cannot send session cache limiter - headers already sent (output started at c:apachehtdocsnaukaforumplik1.php:25) in c:apachehtdocsnaukaforumplik2.php on line 8



Warning: Cannot add header information - headers already sent by (output started at c:apachehtdocsnaukaforumplik1.php:25) in c:apachehtdocsnaukaforumplik2.php on line 11

Wielkie dzięki z góry dla tych którzy wyrażą wole pomocy...
itsme
include ("plik1.php"); - a co tam jest questionmark.gif
patrycjusz
no właśnie ta funkcja przedstawiona w poprzednim poscie pobierająca login i haslo z bazy i tutaj mam problem bo pobiera mi tylko pierwszy rekord ni i jeszcze funkcja łącząca z bazą.
patrycjusz
zadam pytanie... Czy ktoś jest w stanie mi pomóc ?
Omega
powinieneś użyć pętli do wszytania wyników z tabeli.. twój kod wygląda nastepująco:

[php:1:34d1a8e8d4]<?php
$rekord = mysql_fetch_array($wynik);
$log = $rekord[0];
$pass = $rekord[1];
?>[/php:1:34d1a8e8d4]

sprubój zrobic to tak:

[php:1:34d1a8e8d4]<?php
while( $rekord = mysql_fetch_array($wynik) )
{
$log[] = $rekord[0];
$pass[] = $rekord[1];
}
?>[/php:1:34d1a8e8d4]

Dzięki temu w tablicach $log i $pass będziesz miał to czego chciałeś...biggrin.gif

Dalej powinieneś je wykożystać tak jak już tego potrzebujesz... biggrin.gif
patrycjusz
widzisz omega to co podałeś akurat mi nie pomogło... :cry: ale to nic będe próbował,czytał do późna... zastanawia mnie czy nikogo niema czyteż tylko ty miałeś chęci mi pomóc :wink: .
Takie jedno pytanie - spójrz jeszcze raz na ten kod i powiedz mi co ty byś zrobił aby zadziałał.
Z góry dzieki. laugh.gif
Omega
Powiedz czy to jest jedyny kod jaki masz na tej stronie, czy przed tym skryptem nie ma nic innego... bo sesja musi się zacząć przed jakim kolwiek kodem html... pokaż mi cały skrypt...
patrycjusz
o to skrypt
[php:1:9a721d26b5]<?php
include ("plik1.php");
if(isset($log) && isset($pass)){
if($log == $_POST['login'])
{
if($pass == $_POST['password'])
{
session_start();
session_register('log');
session_register('pass');
header('location: bobo.php?'.SID);
print "jest ok";
exit();
} else {
echo 'Nieprawidlowe dane!'; }
}
}
?>
<FORM method="POST" action="<?php echo $PHP_SELF?>">
Login:<INPUT type='text' class='login' name='login'>
Haslo:<INPUT type="password" class="password" name="password">
<INPUT type="submit" value="ok"></td></tr>
</FORM>

?>[/php:1:9a721d26b5] a oto plik includowany plik1.php
[php:1:9a721d26b5]<?php<?php
$host = "localhost";
$login_bazy = "root";
$haslo_bazy = "root";
$baza = "Mforum";

function baza() {
global $host,$login_bazy,$haslo_bazy,$baza;
$polaczdb = mysql_connect ($host,$login_bazy,$haslo_bazy) or die
("<b>nie udało się połączyć</b>");
$wybierzdb = mysql_select_db ($baza,$polaczdb) or die
("<b>nie udało się wybrać bazy danych");
}
baza();
function pokaz(){
global $log,$pass;
$wynik = mysql_query("SELECT login,haslo FROM uzytkownicy");
while($rekord = mysql_fetch_array($wynik)){
$log[] = $rekord[0];
$pass[] = $rekord[1];
}}
pokaz();
?>


?>[/php:1:9a721d26b5]
Dzieki za zaintersowanie :wink:
Omega
aaa no widzisz... biggrin.gif

[php:1:84b67eb7f8]<?php
function baza() {
global $host,$login_bazy,$haslo_bazy,$baza;
$polaczdb = mysql_connect ($host,$login_bazy,$haslo_bazy) or die
("<b>nie udało się połączyć</b>");
$wybierzdb = mysql_select_db ($baza,$polaczdb) or die
("<b>nie udało się wybrać bazy danych");
}
?>[/php:1:84b67eb7f8]

tutaj masz coś co przeszkadza...
musisz ten plik dołączyć po tym jak zainicjujesz sesję... i będzie git...
smile.gif
patrycjusz
dzięki omega ale akurat tego się dosyć szybko domyśliłem niewiem tylko dlaczego niedziała mi samo logowanie? :?
Omega
z kolei teraz jak dołączasz plik po tym wszystkim, to zmienne $log i $pass nie są zainicjowane... musisz rozdzielic kod... :?
patrycjusz
czyli? proszę wytłumacz mi to jaśniej na przykładzie bo już od dwóch dni niespie
i próbuję pare podobnych rzeczy
DZIEKI :wink:
spenalzo
Musisz zastosować odwoływanie się do zmiennych (np. przez referencję), bo z tego co widxzę to funkcja pokaz() nic nie robi z tablicami $pass i $log, tzn. nie zwraca ich wartości.
patrycjusz
cosik czytałem na ten temat w manualu ale lipa z moim angielskim
jaK BYŚ MÓGŁ MI PRZYBLIRZYĆ TEMAT REFERENCJI NA TYM KONKRETNYM PRZYKŁADZIE TO BEDE WDZIĘCZNY. :wink:
pozdrawiam
spenalzo
To akurat jest po polsku :!:
Ale ok:
Nie wiem co robisz wcześniej z tablicami $log i $pass, dlatego zakładam, że są puste:
[php:1:dcbb44b5e2]<?php
$log=array();
$pass=array();
function pokaz(&$log, &$pass)
{
$wynik = mysql_query("SELECT login,haslo FROM uzytkownicy");
while($rekord = mysql_fetch_array($wynik))
{
$log[] = $rekord[0];
$pass[] = $rekord[1];
}
pokaz($log, $pass);
?>[/php:1:dcbb44b5e2]
i po wykonaniu tej funkcji masz te dwie tablice uzupełnione o dane.
patrycjusz
heh już przeczytałem duży zemnie leń ale to się zmienia, staram sie,
dzieki za zaintersowanie :wink:
Omega
... i jeszcze jedno, skoro masz to w tablicach, tablice rejestrujesz w sesji, to do nich powinieneś się odwoływać, popraw kod:
[php:1:c941b796ce]<?php
if($log == $_POST['login'])
{
if($pass == $_POST['password'])
?>[/php:1:c941b796ce]

zmienne $log i $pass są tablicami w tym wypadku... smile.gif
KaMeLeOn
Cytat
zmienne $log i $pass są tablicami w tym wypadku... smile.gif

ke..?
Jak można porównywać tablice z konkretnymi wartościami? Pomyśl...
patrycjusz
panowie to o co w końcu chodzi?
i jak poprawić błąd?
spenalzo
Cytat
panowie to o co w końcu chodzi?
i jak poprawić błąd?

Bueeeee ;-(((( I po co ja sie tyle naprodukowałem i naszukałem w manualu..
spenalzo
Kurde, że też wcześniej nie zauwazyłem:

[php:1:a5aa2a058d]<?php
while($rekord = mysql_fetch_array($wynik))
{
$log[] = $rekord["login"];
$pass[] = $rekord["haslo"];
}
?>[/php:1:a5aa2a058d]

Poczytaj sobie jakie wyniki generuje funkcja [manual:a5aa2a058d]mysql_fetch_array[/manual:a5aa2a058d]
patrycjusz
spenzalo zmartwię Cie i tak niedziała :? mam nadzieję że dojde do tego zanim zasne, ale jak ktoś ma jeszcze jakieś koncepcje to czekam :wink:
Dzieki za pomoc
spenalzo
Cytat
spenzalo zmartwię Cie i tak niedziała :?

spenalzo!!! :-)
A co nie działa, są jakieś błędyy itp?
patrycjusz
o przepraszam za przejęzyczenie...
co niedziała hmm...
jak daje coś takiego po tej funkcji[php:1:0de43e7f9a]<?php
$log=array();
$pass=array();
function pokaz(&$log, &$pass){
$wynik = mysql_query("SELECT login,haslo FROM uzytkownicy");
while($rekord = mysql_fetch_array($wynik))
{
$log[] = $rekord["login"];
$pass[] = $rekord["haslo"];
}}
pokaz($log, $pass);
print "$log";
?>[/php:1:0de43e7f9a] to mi wyrzuca
"Arrey" zamiast wartości zmiennej $log i widzisz podejżewam że ja czegoś niedoczytałem lub nierozumiem więc jeżeli możesz mi wytłumaczyć
1)w jaki sposób odwoływać się do zmiennych zawartych w funkcji tak aby zadziałał ten skrypt podany przeze mnie...
2)gdzie mogę znaleźć ciekawe arty i sensownie napisane na ten temat (manula wiem gdzie szukać )
3) jak byś ty rozwiązał ten problem z logowaniem?
Z góry dzięki jeszcze raz :wink:
spenalzo
Wyrzuca array, ponieważ jak wielokrotnie pisałem w tym jednym poście (widać to w kodzie: $log=array();) zmienna $log i $pass są tablicami, a co za tym idzie musisz je odczytywać w taki sposób na przykład:
[php:1:ae1c4581a5]<?php
foreach ($pass AS $klucz=>$wartosc)
{
echo $klucz.": ".$wartosc."<br>";
}
?>[/php:1:ae1c4581a5]
KaMeLeOn
[php:1:44cc02db18]<?php
print_r($log);
?>[/php:1:44cc02db18]
patrycjusz
no i chyba kumam all dzieki za dobrą wole i cierpliwość mam nadziej że ktoś również skorzysta na tych postach.
Pozdrawiam no i ofcouz dobrejnocy.
Omega
Cytat
Jak można porównywać tablice z konkretnymi wartościami? Pomyśl...
Przecież ja własnie napisałem że w tym tkwi błąd... a mówiąc
Cytat
popraw kod:

wskazałam na tek kod co jest błędem, bo uznałem że może to zrbic wg swojego uznania...
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.