Datuve :: Forums :: Arhīvs :: tirakais php - $_POST

Datuve

Mana Datuve

Reģistrācija | Noteikumi | Paroles atjaunošana



Forums

Ieskaties


Raksti

Lietotāji online

Lietotāji online: 111

Reģistrētie lietotāji online: 0

Viesi online: 111

Datuve.lv video
Top.LV

tirakais php - $_POST

Ievietoja: rokers @ 2008.06.27 17:00  

Nu tā mēģinu izveidot ļoti primitīvu login sistēmu, un kad logojas iekšā tad izmantoju šādu kodu ->

<form method="post" action="secret.php">
Niks: <type="text" name="user" />
Parole: <type="password" name="pwd" />
<input type="submit" value="login" />
</form>

Un tad otrā lapa, jeb (secret) izdara šādi ->

if ($_POST['user'] == "user" && $_POST['pwd'] == "pwd")
 {
echo'viss strādā (Šo vardu redz tikai ielogojušies cilveki!)';
}
else
{
echo 'Nepareiza parole vai lietotājvārds ';
}

Bet atkal apsleptaja koda es ievadau linku, kuru nospiezot aizved uz nakamo lapu, kura vajag panakt to pašu, tāpēc man ir jautājums, kā varētu dabūt tā, ka $_POST nav jāievada visu laiku, bet ielogojoties parādās viņš apslēpts un staigā visu laiku līdzi, man vajag panākt tā ka ->


$_POST['user'] == "user" un $_POST['pwd'] == "pwd"

un šie post mainīgie staigā līdzi, tas ir katrā failā es ievadu noteiktu rindiņu, kas apzīmē šos divus mainīgos,  kādi tie ir ;)

Paldies, rokers! ! !

Komentāri:

#1 rokers @ 2008.06.27 17:02

Bet tās rindiņas, kas apzīmē ka

$_POST['user'] == "user" un $_POST['pwd'] == "pwd"

vajag likt iekšā otrajā lapā, jeb secret lapā...

#2 drono @ 2008.06.27 17:07

Vislabāk ar sesijām.

Skripta sākumā katrā PHP failā ievieto
session_start();

Tad tev būs ieejami mainīgie $_SESSION['nosaukums'], kuri saglabāsies arī pēc lapas pārlādes.

Zem "echo'viss strādā" ieliec
$_SESSION['ielogojies']=1;

Un tad katrā lapā pārbaudi
if($_SESSION['ielogojies']) echo "viss OK"; else echo "Lūdzu ielogojies!";

#3 useris @ 2008.06.27 17:07

Pie ielogošanās jāpiešķir sesija:

session_start();

f ($_POST['user'] == "user" && $_POST['pwd'] == "pwd")
{
echo'viss strādā (Šo vardu redz tikai ielogojušies cilveki!)';
$_SESSION['logged'] = true;
}
else
{
echo 'Nepareiza parole vai lietotājvārds ';
}

Un tad visās pārējās lapās augšā ieraksti rindiņas:

session_start();
if ($_SESSION['logged'] != true) {
 echo 'Pieeja liegta!';
 exit();
}

#4 rokers @ 2008.06.27 17:38

Paldies ;)

Šī rindiņa ->

if($_SESSION['ielogojies']) echo "viss OK"; else echo "Lūdzu ielogojies!";

Jārakstā tā??

<?php

if ($_SESSION['ielogojies'])
 {
echo'viss ir ok!';
}
else
{

echo 'Lūdzu ielogojies';

}

?>

#5 drono @ 2008.06.27 17:40

#4> Tas jau ir tas pats. {} ir obligāti jāizmanto tikai tad, ja tajā ir vairākas komandas.
Starp citu, katrā lapā jau nerakstīsi "viss ir ok!", tā kā useris piemēriņš ir nedaudz labāks.

#6 rokers @ 2008.06.27 17:42

Un kā tulkojas šis errors?

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\web\htdocs\new\index.php:1) in C:\web\htdocs\new\l\login.php on line 5

#7 drono @ 2008.06.27 17:44

#6> Pirms session_start() nedrīkst neko nosūtīt klientam (ar echo vai savādāk).

Ja tu izmanto utf-8 kodējumu, tad saglabā savu dokumentu kā "UTF-8 without BOM" (Piemēram, programmā Notepad++).
BOM ir tie pāris uft-8 speciālie simboli, kas ir faila sākumā un tiek nosūtīti atverot failu.

#8 rokers @ 2008.06.27 17:47

Hm, A, ir iespejams dabut, ka es velejos, jo man lapa sastav no ljot daudziem failiem, un bus gruti visus parkodet...

#9 useris @ 2008.06.27 18:21

Nāksies... Vai tad tik liels projekts, ka tik ļoti daudz failu? Varbūt ne pa tēmai, bet kā iesācējam paskaidrošu, ka programmēšanas valodu pielietojuma burvība standarta tīmekļa lapās ir vienkāršība lapas struktūrā. Proti, ar tā paša PHP palīdzību var izveidot vienkāršu, informatīvu mājas lapu, kas sastāv no viena vienīga faila. Tādēļ neizprotu, kādēļ Tev ir "ļoti daudz" failu, ja vien tā lapa nav kāds nestandarta (vai arī čerez ž...) risinājums.

Iesaku papētīt kādus tutoriāļus internetā, tur minētos piemērus. Piemēram, šajā gadījumā Tev noteikti palīdzēs http://www.google.lv/search?hl=lv&q=php+login&btnG=Mekl%C4%93t…

#10 drono @ 2008.06.27 20:48

#8> Cik ir "ļoti daudzi faili"? 10? 100?
Ko tieši tu domāji ar "būs grūti visus pārkodēt"?
Ja to domāji par #7 komentu, tad tur nekas nav jāpārkodē, viens klikšķis programmā un gatavs.
Pie tam uz utf-8 ir jāpārkonvertē tikai tie faili, kuros ir latviešu u.c. valodu speciālie simboli (garumzīmes, krievu burti utt). Pārējie faili paliek uz ANSI un tur nekas nemainās.

#11 rokers @ 2008.06.27 22:36

Skaidris ;) Es cenšos visu laiku atrast to vienkāršāko variantu, bet laikam šoreiz nesanāks ;)

A, nevaretu but ta, ka kaut kur servera setingos atslegti cookies? ;)

#12 BernuBieds @ 2008.06.27 23:13

ja tev raadaas #6 errors tad papildinot #7 gribu pateikt, ka viss kas ir aarpus <?php ?> tiek uzskatiits par HTML taatad, ja tev pirms <?php ir kaut tukshuma ziime, tad tas jau tiek suutiits prom, ar include failiem tas pats, nu kaut kaa taa.

#13 Mad182 @ 2008.06.27 23:41

Nu ko tur pārkodēt...

Doma apmēram tāda:

<?php
session_start();

if (!empty($_POST['user'])) { $user = $_POST['user']; } else { $user = ""; }
if (!empty($_POST['pass'])) { $pass = md5(trim($_POST['pass'])); } else { $pass = ""; }

if (!isset($_SESSION['user']) && !isset($_SESSION['pass']) ) {
 $_SESSION['user'] = $user;
 $_SESSION['pass'] = $pass;
} elseif(isset($_SESSION['user']) && isset($_SESSION['pass'])) {
 if (!empty($_POST['user']) && !empty($_POST['pass'])) {
   $_SESSION['user'] = $user;
   $_SESSION['pass'] = $pass;
 } else {
   $user = $_SESSION['user'];
   $pass = $_SESSION['pass'];
 }
}

if($user != 'user' or $pass != '5f4dcc3b5aa765d61d8327deb882cf99') {
?>
 <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
   Lietotajs: <input type="text" name="user" /><br />
   Parole: <input type="password" name="pass" /><br />
   <input name="submit" type="submit" value="Iebrist" />
 </form>
<?php
 exit;
}
?>

Saglabājam kā failu login.php

un katram failam, kuru gribam aizsargāt ar paroli, pašā sakumā liekam

require('login.php');

#14 parols @ 2008.06.28 00:11

eu cik ilgi tas session straadaa
man arii tas iepatikas saavai lapai aizstaasu nedroso get

#15 Mad182 @ 2008.06.28 08:24

Ko tu kur gribi aizstāt? GET, POST, SESSION, COOKIE katram ir savs pielietojums...

#16 drono @ 2008.06.28 12:15

#14> Session strādā, līdz aizver pārlūku/iztīra sesijas, vai PHP nodzēš mainīgos ar unset($_SESSION).

#17 rokers @ 2008.06.29 18:20

Paldies, bet es atradu kaut ko lidzigu #13 un izmantoju ;)
Šis ļoti labi noder login sistēmai -> http://www.php-login-script.com/

Un vēlviens jautājums, kā angliski sauktos lieta, kad izmantojot formas (PHP un HTML), rediģētu datubazes? Piemeram labojot savu profilu.

#18 Rxx @ 2008.06.29 23:04

Edit?

MySQL ir komanda UPDATE.