Autor |
Wiadomość
|
MacPain |
Wysłany: 04 Kwi 2006, 15:31 Temat postu: Problem z session_start(); |
|
|
Gaduła
Dołączył: 18 Paź 2005 Posty: 245
|
kod wyglada nastepujaco Kod: | <?php
session_start();
$nazwa_uz = $_POST['nazwa_uz'];
$haslo = $_POST['haslo'];
if(isset($_POST['nazwa_uz']) && isset($_POST['haslo']))
{
$mysql=mysql_connect('localhost','root','krasnal');
$wybrana=mysql_select_db("nowa");
$zapytanie="select * from uzytkownik where nazwa_uz='$nazwa_uz' and haslo='$haslo'";
$wynik=mysql_query($zapytanie);
if (mysql_num_rows($wynik) != 0)
{
$_SESSION['prawid_uzyt'] = $nazwa_uz;
echo "<a href='dalej.php'>Back</a>";
}
else
{
echo"niepomyślne logowanie";
exit;
}
}
echo "<a href='dalej.php'>Next</a>";
?> |
Problem w tym ze wyrzuca mi blad typu
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\usr\krasnal\www\bbbbbbb\loguj.php:1) in c:\usr\krasnal\www\bbbbbbb\loguj.php on line 2
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\usr\krasnal\www\bbbbbbb\loguj.php:1) in c:\usr\krasnal\www\bbbbbbb\loguj.php on line 2
BackNext
Za wszelka pomoc z gory thx. |
|
Powrót do góry |
|
|
KCS |
Wysłany: Temat postu: Reklama w KCS |
|
|
|
|
Powrót do góry |
|
|
jachu |
Wysłany: 04 Kwi 2006, 15:37 Temat postu: |
|
|
Nowicjusz
Dołączył: 04 Kwi 2006 Posty: 10
Skąd: Bydgoszcz
|
|
Powrót do góry |
|
|
MacPain |
Wysłany: 04 Kwi 2006, 16:04 Temat postu: |
|
|
Gaduła
Dołączył: 18 Paź 2005 Posty: 245
|
Wiec zapytam dalaczego tak no i czy powiazania beda widoczne jezeli odniose sie do nastepnej zakladki w ktorej sprawdzam czy sesja isset ??? |
|
Powrót do góry |
|
|
MacPain |
Wysłany: 04 Kwi 2006, 16:18 Temat postu: |
|
|
Gaduła
Dołączył: 18 Paź 2005 Posty: 245
|
Zrobilem tak i dziala jak ja nie lubie takich sytuacji:
logowanie: Kod: | <?php
session_start();
$nazwa_uz = $_POST['nazwa_uz'];
$haslo = $_POST['haslo'];
if ($nazwa_uz && $haslo)
{
$mysql=mysql_connect('localhost','root','krasnal');
$wybrana=mysql_select_db("nowa");
$zapytanie="select * from uzytkownik where nazwa_uz='$nazwa_uz' and haslo='$haslo'";
$wynik=mysql_query($zapytanie);
if (mysql_num_rows($wynik) != 0)
{
$_SESSION['prawid_uzyt'] = $nazwa_uz;
echo "<a href='dalej.php'>Back</a>";
}
else
{
echo"niepomyślne logowanie";
exit;
}
}
echo "Logowanie nie powiodło się";
?>
| i odwolanie sie do nastepnej zakladki :
Kod: | <?php
session_start();
echo '<h1>Część członkowska</h1>';
if(isset($_SESSION['prawid_uzyt']))
{
echo '<p>Użytkownik zalogowany jako '.$_SESSION['prawid_uzyt'].'</p>';
echo '<p>Oto zawartość dostępna tylko dla członków</p>';
}
else
{
echo '<p>Użytkownik niezalogowany.</p>';
echo '<p>Tylko zalogowani użytkownicy mogą oglądać tę stronę.</p>';
}
echo '<a href="uwierz_glowny.php">Powrót do strony głównej</a>';
?>
|
Hmmm wydaj mi sie ze dzialajac na krasnalserv i robiac strony z kodowanie utf-8 session_start(); nie dziala jezeli znowu zrobimy w ANSI to dziala dziwna sprawa |
|
Powrót do góry |
|
|
MacPain |
Wysłany: 04 Kwi 2006, 16:22 Temat postu: |
|
|
Gaduła
Dołączył: 18 Paź 2005 Posty: 245
|
Czytalem gdzies na grupach ze utf-8 wstawia dodatkowe puste znaki i sesja nie moze byc wykonana bo przesyla pusty ciag znakow moge sie mylic |
|
Powrót do góry |
|
|
Said |
Wysłany: 07 Kwi 2006, 09:45 Temat postu: |
|
|
Bywalec
Dołączył: 04 Kwi 2006 Posty: 160
|
$nazwa_uz = $_POST['nazwa_uz'];
$haslo = $_POST['haslo'];
a co sie dzieje jak ktos nie poda hasla albo nazwy uzytkownika ??
conajmniej powinno byc tak (moim zdaniem ) :
if ( isSet( $_POST['nazwa_uz'] ) && !empty( $_POST['nazwa_uz']) )
$nazwa_uz = $_POST['nazwa_uz'];
else
die('Podaj login!');
i tak samo dla hasla _________________ Graj online w gry flash z serii super mario. Dobra zabawa gwarantowana! |
|
Powrót do góry |
|
|
Said |
Wysłany: 07 Kwi 2006, 09:48 Temat postu: |
|
|
Bywalec
Dołączył: 04 Kwi 2006 Posty: 160
|
hmm, zmienne odebrane z formularza dodajesz bezposrednio (bez sprawdzenia) do skryptu moze Ci sie stac krzywda - czy slyszales o SQL injection ? _________________ Graj online w gry flash z serii super mario. Dobra zabawa gwarantowana! |
|
Powrót do góry |
|
|
MacPain |
Wysłany: 07 Kwi 2006, 09:53 Temat postu: |
|
|
Gaduła
Dołączył: 18 Paź 2005 Posty: 245
|
to byla stara werja nowa wyglada juz tak: Kod: | <?php
session_start();
if (isset($POST['$nazwa_uz']) && isset($POST['haslo']))
$nazwa_uz = $_POST['nazwa_uz'];
$haslo = $_POST['haslo'];
{
$mysql=mysql_connect('localhost','root','krasnal');
$wybrana=mysql_select_db("nowa");
$zapytanie="select * from uzytkownik where nazwa_uz='$nazwa_uz' and haslo='$haslo'";
$wynik=mysql_query($zapytanie);
if (mysql_num_rows($wynik) != 0)
{
$_SESSION['prawid_uzyt'] = $nazwa_uz;
}
else
{
echo"niepomyślne logowanie";
exit;
}
}
if (isset($_SESSION['prawid_uzyt']))
{
echo 'Zalogowano jako '.stripslashes($_SESSION['prawid_uzyt']).'.';
echo '<br />';
echo "<a href='dalej2.php'>Dalej</a>";
}
else
{
echo "nie jest zalogowany";
exit;
}
?>
| |
|
Powrót do góry |
|
|
Said |
Wysłany: 07 Kwi 2006, 10:02 Temat postu: |
|
|
Bywalec
Dołączył: 04 Kwi 2006 Posty: 160
|
nadal sa bledy o ktorych pisalem wyzej:
1. sprawdzasz czy zmienne zostaly ustawione natomiast nie sprawdzasz czy sa puste - przynajmniej jesli chodzi o login to powinienes dokonac takiego sprawdzenia - hasla nie musisz tylko pod warunkiem ze dopuszczasz wystepowanie pustych hasel.
isSet() sprawdza tylko czy taka zmienna gdzies tam wystapila - dzieki temu nie bedzie bledu - brak indeksu w tablicy $_POST
empty() - sprawdza czy zmienna nie jest czasami pusta
generalnie to powinno sie dokonac sprawdzenia jakiego typu przyszly dane
kozystajac np. z is_numeric()...etc
2. dane odbierasz z wlasciwego miejsca natomiast nie sprawdzasz co w nich przyszlo (narazajac sie na sql injection) - powinienes przynajmniej uzyc htmlspecialchars( $_POST['zmienna'] ) _________________ Graj online w gry flash z serii super mario. Dobra zabawa gwarantowana! |
|
Powrót do góry |
|
|
Said |
Wysłany: 07 Kwi 2006, 10:05 Temat postu: |
|
|
Bywalec
Dołączył: 04 Kwi 2006 Posty: 160
|
no skoro juz sie tak czepiam
to jeszcze jedna podpowiedz - lepiej jest korzystac z pojedynczych cudzyslowow np $sql = 'Select * FROM ' . $tab_name . ' WHERE ...';
interpreter php traktuje tekst zawarty w pojedynczych cudzyslowach jako
string i opuszcza - w podwojnych sprawdza w poszukiwaniu zmiennych - bez dziala szybciej - no i kozystaj z podpowiedzi wyzej czyli ob_start() - ob_end_flush() na koncu skryptu _________________ Graj online w gry flash z serii super mario. Dobra zabawa gwarantowana! |
|
Powrót do góry |
|
|
MacPain |
Wysłany: 07 Kwi 2006, 17:57 Temat postu: |
|
|
Gaduła
Dołączył: 18 Paź 2005 Posty: 245
|
Zrobilem tak kwerendy nie ruszam dziekuje za porady BIG THX kod wyglada tak:
Kod: | <?php session_start(); ?>
<html><body bgcolor="CAE2F0">
<?php
if ( isSet( $_POST['nazwa_uz'] ) && !empty( $_POST['nazwa_uz']) )
$nazwa_uz = htmlspecialchars($_POST['nazwa_uz']);
if ( isSet( $_POST['haslo'] ) && !empty( $_POST['haslo']) )
$haslo = htmlspecialchars($_POST['haslo']);
{
$mysql=mysql_connect('localhost','root','krasnal');
$wybrana=mysql_select_db("nowa");
$zapytanie="select * from uzytkownik where nazwa_uz='$nazwa_uz' and haslo=md5('$haslo')";
$wynik=mysql_query($zapytanie);
if (mysql_num_rows($wynik) != 0)
{
$_SESSION['prawid_uzyt'] = $nazwa_uz;
}
else
{
echo '<center>';
echo 'Nie jestes zalogowany';
echo '<br><br>';
echo '<a href="index.php">Zalogoj sie</a>';
echo '</center>';
exit;}
}
if (isset($_SESSION['prawid_uzyt']))
{
echo '<center>';
echo 'Zalogowano jako '.stripslashes($_SESSION['prawid_uzyt']).'.';
echo '<br><br>
<a href="wyswietl.php">Wyswietl wszystkie</a>
<a href="dodaj.php">Dodaj nowe ogloszenie</a>
<a href="zmien.php">Zmiana ogloszenia</a>
<a href="usun.php">Usuwanie ogloszenia</a>
<a href="wylogoj.php">Logout</a>
';
echo '</center>';
}
else
{
echo '<center>';
echo 'Nie jestes zalogowany';
echo '<br><br>';
echo '<a href="index.php">Zalogoj sie</a>';
echo '</center>';
exit;
}
?>
</body></html> | i o co chodzi z ob_start(); czytam w manualu ale moj angielski nie jest perfekt ?? |
|
Powrót do góry |
|
|
|