Autorius Tema: Problema su sesijom ir prisijungimo  (Skaityta 307 kartus)

Neprisijungęs xkendzu

  • Naujokas
  • *
  • Įrašai: 19
  • Karma: +0/-0
    • Žiūrėti profilį
Problema su sesijom ir prisijungimo
« Įrašytas: 2013-06-22 12:19:11 pm »
Sveiki, turiu problema su PHP sesijom bei prisijungimu. Esu naujokas ant PHP, bet šį tą žinau. Taigi, dariau registracija su prisijungimu. Viskas yra keliuose failuose:
Index.php failas :
<?php

$kieknariu 
count(glob("zaidejai/*"));


$id $_GET['id'];
if (
$id == "") {
echo 
"
<a href='index.php?id=registracija'>Registracija</a><br>
<a href='index.php?id=prisijungimas'>Prisijungimas</a><br>
Su mumis tiek uzsiregistravusiu nariu: $kieknariu

"
;
}

if (
$id == "registracija") {
echo 
"
<form action='index.php?id=registracija2' method='post'>

Vardas :<input type='text' name='vardas'><br>
Slaptazodis :<input type='password' name='pass'><br>
<input type='submit' value='Registruotis'>
</form>

"
;
}


if (
$id == "registracija2") {
$vardas $_POST['vardas'];
$slaptazodis $_POST['pass'];

if (
strlen($vardas) > 10) {
echo 
"Per ilgas vardas";
} else {
if (
strlen($slaptazodis) > 10) {
echo 
"Per ilgas slaptikas";
} else {
if (
$vardas == "") {
echo 
"Tuscias vardo laukelis";
} else {
if (
$slaptazodis == "") {
echo 
"Tuscias slaptiko laukelis";
} else {


$pinigai 100;
$lygis 5;
$atidaro fopen("zaidejai/$vardas.txt""w+");
fwrite ($atidaro"$pinigai|$lygis|$vardas|$slaptazodis");
fclose ($atidaro);
echo 
"Uzsiregistravote sekmingai!";
}
}
}
}
}

if (
$id == "prisijungimas") {
echo 
"
<form action='index.php?id=prisijungimas2' method='post'>
Prisijungimo vardas : <input type='text' name='vardas'><br>
Prisijungimo slaptazodis : <input type='password' name='pass'><br>
<input type='submit' value='Prisijungti'>
</form>


"
;
}

if (
$id == 'prisijungimas2') {
$nickas $_POST['vardas'];
$pasas $_POST['pass'];
echo 
"<H1>Jungimasi<h1><br>
<a href='logas.php?nickas=$vardas&pass=$pass'>Jungtis toliau</a>
"
//nustatom per url ka siusim
}
















?>

Čia man atrodo viskas normaliai, dabar kitas failas:
logas.php :


<?php
error_reporting
(0);
session_start(); //VISADA VIRSUI PO PHP TURI BUT
$nickas $_GET['vardas']; //gaunam per URL nickas
$pasas $_GET['pass']; //gaunam per URL slaptazody
$info explode("|"file_get_contents("zaidejai/$nickas.txt"));
if (
$info[2] != $nickas) {
echo 
"Blogas vardas!"
} else {
if (
$info[3] != $pasas) {
echo 
"Blgoas slaptazodis!";
} else {
$_SESSION["nickas"]=$nickas;
include(
"sesija.php"); //cia inkludint reik
header("location: namai.php");
}
}


?>


Šitam faile beveik viska pats rasiau, buvo blogai, paprašiau draugo pagalbos, papildė kodą, bet manau neteisingai :D


Dabar sesija.php failas :

<?php
session_start
();
$nicko_reiksme $_GET["nickas"];
$_SESSION["nickas"]=$nicko_reiksme;

?>

Šitą visą failą rašė draugas.

O dabar paskutinis, namai.php :

<?php

if (!isset($_SESSION['nickas'])){
echo 
"Klaida!";
} else {
echo 
"Sveikas prisijunges!!!";
}



?>


Va, visi failai išdėstyti. Taigi, dabar bandydamas prisijungti, man išmeta žodį Klaida!. Taigi prašau jūsų pagalbos. Dabar stringu su sesijomis... Turiu tikrai norą mokytis, tad prašau jūsų pagalbos. Tikiuosi padėsite..

Ačiū
« Paskutinį kartą keitė: 2013-06-22 14:25:53 pm sukūrė xkendzu »

Neprisijungęs Kalnų karalius

  • Naujokas
  • *
  • Įrašai: 104
  • Karma: +0/-0
    • Žiūrėti profilį
Ats: Problema su sesijom ir prisijungimo
« Atsakymas #1 Įrašytas: 2013-06-22 20:00:32 pm »
Taigi pradėkime...
Lyginimo operatorius yra du lygybės ženklai, neigiamam rezultatui - šauktukas. Taigi turi būti

!==if ($info[2] !== $nickas) ir visur kitur ištaisyk
Toliau, reikėtų apsaugoti vartotojo įvedamus duomenis nuo sql injekcijos - gali su mysql_real_escape_string($_GET[['kazkas']).

Kam tiek daug prirašei? Viską daug paprasčiau galima padaryti:
<?php
session_start
();
$_SESSION["nickas"] =  $_GET["nickas"];
?>

O duomenis geriau gauti POST metodu.. Ir niekada neišjunk error_repoting, nes nežinosi kur yra sintaksės ar loginės klaidos.
Na jei ką praleidau tai kiti papildys.
4c61626173212

Prisijungęs Modestas Vaitkevičius

  • Dalyvis
  • **
  • Įrašai: 2005
  • Karma: +56/-16
    • Žiūrėti profilį
    • Apie mane
Ats: Problema su sesijom ir prisijungimo
« Atsakymas #2 Įrašytas: 2013-06-22 20:10:39 pm »
Karaliau, deja lyginti galima ir su == ir su === tik jau lyginsi ir tipą ( int, string, array ir t.t. ). Nelygybę geriau rašyti ne su !==, o su != šiuo atvėju :) Nebent reikia case sensitive ir lyginti tipą :)

Kitas dalykas išvis nebenaudokit tu mysql_* funkcijų. Meskit per bortą, nes jau php 5.5 yra. - Pasitaisau. Kalnų karaliau, čia tau ne XSS filtras + duomenų į database nesaugai, todėl kam tau juos filtruoti čia? :) Jau geriau htmlspecialchars() ar kaip ten dabar :)

Toliau, taip error report niekada neatjunk nebent jau production serveris :)

O dabar autoriui:

Pats parašęs komentare, kad session_start() turi būti po <?php, bet taip nėra... Dafuq?

Neprisijungęs Kalnų karalius

  • Naujokas
  • *
  • Įrašai: 104
  • Karma: +0/-0
    • Žiūrėti profilį
Ats: Problema su sesijom ir prisijungimo
« Atsakymas #3 Įrašytas: 2013-06-22 20:42:38 pm »
mysqli_real_escape_string, ok? Bet aš htmlspecialchars naudoju su ent_quate
4c61626173212

Manualai.lt Forumas

Ats: Problema su sesijom ir prisijungimo
« Atsakymas #3 Įrašytas: 2013-06-22 20:42:38 pm »

Neprisijungęs xkendzu

  • Naujokas
  • *
  • Įrašai: 19
  • Karma: +0/-0
    • Žiūrėti profilį
Ats: Problema su sesijom ir prisijungimo
« Atsakymas #4 Įrašytas: 2013-06-22 20:45:27 pm »
Modestai, del to komentaro, tai ne aš parašiau o tas draugas. Dėkoju už atsakymus, tik gal galetumėte labiau paaiskinti, kurį kodą į kokį failą įrašyti? Labai dėkoju už jūsų kantrybę.

Manualai.lt Forumas

Ats: Problema su sesijom ir prisijungimo
« Atsakymas #4 Įrašytas: 2013-06-22 20:45:27 pm »