Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kodowanie i session_start();
Forum PHP.pl > Forum > PHP
elfik6
Witam!
Jestem początkujący w php więc proszę o wyrozumiałość!
Na stronie, którą tworzę potrzebuję mieć logowanie i rejestrację, zrobiłem to dzięki opisanej metodzie na pewnym forum. Wsyztsko śmiga jednak jest mały problem;/
Polskie litery mam zniekształcone co oczywiście wskazuje na złe kodowanie. Moje obecne kodowanie to utf-8 bez BOM.
Gdy zmienię kodowanie na utf-8 to polskie znaki pojawiają mi się normlanie jednak w jednym z plików dotyczących rejestracji mam session_start(); i gdy zmieniam kodowanie na utf-8 wyskakuje mi błąd z tym session_start();
Przeczytałem juz o headers already sent by aby naprawić to session_start(); jednak, żadne metody nei pomagają ;/
Używałem metod z tej strony
  1. http://www.capaciouscore.pl/artykuly/blad-headers-already-sent-by/


Czy ktoś może mi powiedzieć co robie źle?
ssstrz
programisci php to czarodzieje ale jasnowidzow nie ma, a bez kodu to raczej robota dla jasnowidza, ale Twoj problem polega na tym ze pewnie gdzies dodajesz naglowek <head> a po tym naglowku wywolujesz funkcje session_start. Innymi slowy zamim cokolwiek zaczniesz wypisywac na ekran to wczesniej uruchom funkcje session_start bo jak wyslesz chocby spacje to juz po ptokach. Noi oczywiscie zamiesc kod to bedzie llatwiej problem rozwiazac.
elfik6
ok, oto moje pliki wzięte z tego forum:
http://www.forumweb.pl/porady-i-tutoriale-...bezpiecze,46976
Dodam jeszcze,ze kożystam z notepad++

config.php

  1. <?php session_start();
  2. mysql_connect("localhost","laokos_film","asus") or die(mysql_error()."Nie można połączyć się z bazą danych. Proszę chwilę odczekać i spróbować ponownie.");
  3. mysql_select_db("laokos_film") or die(mysql_error()."Nie można wybrać bazy danych.");
  4. mysql_query("set names 'utf8'");
  5. ?>


indeks.php

  1. <?php
  2. include("config.php");
  3. $nick = $_SESSION['nick'];
  4. $haslo = $_SESSION['haslo'];
  5. if ((empty($nick)) AND (empty($haslo))) {
  6. echo '<br>Nie byłeś zalogowany albo zostałeś wylogowany<br><a href="index.php">Strona Główna</a><br>';
  7. }
  8. $user = mysql_fetch_array(mysql_query("SELECT * FROM uzytkownicy WHERE `nick`='$nick' AND `haslo`='$haslo' LIMIT 1"));
  9. if (empty($user[id]) OR !isset($user[id])) {
  10. echo '<br>Nieprawidłowe logowanie.<br>';
  11. }
  12. // tresc dla zalogowanego uzytkownika
  13. echo 'Witaj '.$user[nick].' zostałeś/aś pomyślnie zalogowany/a, tutaj umieść ukryta strone tylko dla zalogowanych';
  14. echo '<br><a href="wyloguj.php">Wyloguj mnie</a>';
  15. ?>


index.php

  1. <html>
  2. <head>
  3. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  4. <title>Wypożyczalnia polskich filmów</title>
  5. <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
  6. </head>
  7. <body>
  8.  
  9. <form action="logowanie.php"><input type="submit" value="Moje filmy"></form>
  10.  
  11. </body>
  12. </html>
  13.  


login.php

  1. <?php include("config.php"); ?>
  2. <?php
  3. $login = $_POST['login'];
  4. $haslo = $_POST['haslo'];
  5. $haslo = addslashes($haslo);
  6. $login = addslashes($login);
  7. $login = htmlspecialchars($login);
  8.  
  9. if ($_GET['login'] != '') { //jezeli ktos przez adres probuje kombinowac
  10. }
  11. if ($_GET['haslo'] != '') { //jezeli ktos przez adres probuje kombinowac
  12. }
  13.  
  14. $haslo = md5($haslo); //szyfrowanie hasla
  15. if (!$login OR empty($login)) {
  16. include("head2.php");
  17. echo '<p class="alert">Wypełnij pole z loginem!</p>';
  18. include("foot.php");
  19. }
  20. if (!$haslo OR empty($haslo)) {
  21. include("head2.php");
  22. echo '<p class="alert">Wypełnij pole z hasłem!</p>';
  23. include("foot.php");
  24. }
  25. $istnick = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM `uzytkownicy` WHERE `nick` = '$login' AND `haslo` = '$haslo'")); // sprawdzenie czy istnieje uzytkownik o takim nicku i hasle
  26. if ($istnick[0] == 0) {
  27. echo 'Logowanie nieudane. Sprawdź pisownię nicku oraz hasła.';
  28. } else {
  29.  
  30. $_SESSION['nick'] = $login;
  31. $_SESSION['haslo'] = $haslo;
  32.  
  33. header("Location: indeks.php");
  34. }
  35. ?>


logowanie.php

  1. <form method="POST" action="login.php">
  2. <table cellpadding="0" cellspacing="0" width="180">
  3.  
  4. <tr><td><br></td></tr>
  5. <tr><td width="50">Login:</td><td><input type="text" name="login" maxlength="32"></tr></td>
  6. <tr><td width="50">Hasło:</td><td><input type="password" name="haslo" maxlength="32"></tr></td>
  7. <tr><td align="center" colspan="2"><input type="submit" value="Zaloguj"><br></tr></td>
  8.  
  9. </form>
  10.  
  11. <tr><td><?php echo ('Nie posiadam konta');?></tr></td>
  12. <tr><td align="center" colspan="2"><form action="rejestracja.php"><input type="submit" value="Zarejestruj"></form><br></tr></td>
  13.  
  14.  
  15. </table>
  16. </form>


rejestracja.php

  1. <?php include("config.php");
  2.  
  3. $ip = $_SERVER['REMOTE_ADDR'];
  4.  
  5. $akcja = $_GET['akcja'];
  6. if ($akcja == wykonaj) {
  7. //
  8. $nick = substr(addslashes(htmlspecialchars($_POST['nick'])),0,32);
  9. $haslo = substr(addslashes($_POST['haslo']),0,32);
  10. $vhaslo = substr($_POST['vhaslo'],0,32);
  11. $email = substr($_POST['email'],0,32);
  12. $vemail = substr($_POST['vemail'],0,32);
  13. $nick = trim($nick);
  14. //kilka sprawdzen co do nicku i maila
  15. $spr1 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM uzytkownicy WHERE nick='$nick' LIMIT 1")); //czy user o takim nicku istnieje
  16. $spr2 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM uzytkownicy WHERE email='$email' LIMIT 1")); // czy user o takim emailu istnieje
  17. $pos = strpos($email, "@");
  18. $pos2 = strpos($email, ".");
  19. $emailx = explode("@", $email);
  20. if ($emailx[1] == 'o2.pl') {
  21. $emailx1 = $emailx[0].'@go2.pl';
  22. $emailx2 = $emailx[0].'@tlen.pl';
  23. $spr3 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM uzytkownicy WHERE email='$emailx1' OR `email`='$emailx2' LIMIT 1"));
  24. }elseif ($emailx[1] == 'go2.pl') {
  25. $emailx1 = $emailx[0].'@o2.pl';
  26. $emailx2 = $emailx[0].'@tlen.pl';
  27. $spr3 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM uzytkownicy WHERE email='$emailx1' OR `email`='$emailx2' LIMIT 1"));
  28. }elseif ($emailx[1] == 'tlen.pl') {
  29. $emailx1 = $emailx[0].'@go2.pl';
  30. $emailx2 = $emailx[0].'@o2.pl';
  31. $spr3 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM uzytkownicy WHERE email='$emailx1' OR `email`='$emailx2' LIMIT 1"));
  32. }
  33. $komunikaty = '';
  34. $spr4 = strlen($nick);
  35. $spr5 = strlen($haslo);
  36. //sprawdzenie co uzytkownik zle zrobil
  37. if (!$nick || !$email || !$haslo || !$vhaslo || !$vemail ) {
  38. $komunikaty .= "Musisz wypełnić wszystkie pola!<br>"; }
  39. if ($spr4 < 4) {
  40. $komunikaty .= "Login musi mieć przynajmniej 4 znaki<br>"; }
  41. if ($spr5 < 4) {
  42. $komunikaty .= "Hasło musi mieć przynajmniej 4 znaki<br>"; }
  43. if ($spr1[0] >= 1) {
  44. $komunikaty .= "Ten login jest zajęty!<br>"; }
  45. if ($spr2[0] >= 1) {
  46. $komunikaty .= "Ten e-mail jest już używany!<br>"; }
  47. if ($email != $vemail) {
  48. $komunikaty .= "E-maile się nie zgadzają ...<br>";}
  49. if ($haslo != $vhaslo) {
  50. $komunikaty .= "Hasła się nie zgadzają ...<br>";}
  51. if ($pos == false OR $pos2 == false) {
  52. $komunikaty .= "Nieprawidłowy adres e-mail<br>"; }
  53. if ($spr3[0] >= 1) {
  54. $komunikaty .= "Nie można zarejestrować kilku kont na jedną pocztę o2.<br>"; }
  55.  
  56. //jesli cos jest nie tak to blokuje rejestracje i wyswietla bledy
  57. if ($komunikaty) {
  58. <b>Rejestracja nie powiodła się, popraw następujące błędy:</b><br>
  59. '.$komunikaty.'<br>';
  60. } else {
  61. //jesli wszystko jest ok dodaje uzytkownika i wyswietla informacje
  62. $nick = str_replace ( ' ','', $nick );
  63. $haslo = md5($haslo); //szyfrowanie hasla
  64.  
  65. mysql_query("INSERT INTO `uzytkownicy` (nick, email, haslo, ip) VALUES('$nick','$email','$haslo','$ip')") or die("Nie mogłem Cie zarejestrować!");
  66.  
  67. echo '<br><span style="color: green; font-weight: bold;">Zostałeś zarejestrowany '.$nick.'. Teraz możesz się zalogować</span><br>';
  68. echo '<br><a href="logowanie.php">Logowanie</a>';
  69. }
  70. }
  71. ?>
  72.  
  73. <form method="post" action="rejestracja.php?akcja=wykonaj">
  74. <table>
  75. <tr class="tlo-b"><td>Nick:</td>
  76. <td><input maxlength="18" type="text" name="nick" value="<?=$nick?>"></td></tr>
  77. <tr class="tlek"><td>Hasło:</td>
  78. <td><input maxlength="32" type="password" name="haslo"></td></tr>
  79. <tr class="tlo-b"><td>Powtórz hasło:</td>
  80. <td><input maxlength="32" type="password" name="vhaslo"></td></tr>
  81. <tr class="tlo-b"><td>E-mail:</td>
  82. <td><input type="text" name="email" maxlength="50" value="<?=$email?>"></td></tr>
  83. <tr class="tlek"><td>Powtórz E-mail:</td>
  84. <td><input type="text" maxlength="50" name="vemail" value="<?=$vemail?>"></span></td></tr>
  85.  
  86.  
  87. <tr><td colspan="2" align="center"><input type="submit" value="Zarejestruj"></td></tr>
  88. </table></form>
  89.  


wyloguj.php

  1. echo 'Wylogowano';
  2. ?>
Talidali
config.php
Na początku skryptu daj ob_start();
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.