Jump to content
php.lv forumi

Nesaglabājas dati


yeahz

Recommended Posts

Nekad man tas nav paticis un ir radījis problēmas tas, ka ja ir, piemēram, input lauks, kurā es savadu datus spiežu pogu un ilzec kāds errors ka kaut kas nav kā vajadzetu būt, nu neko, nākas spiest atpakaļ (back pogu) un ko es tur ieraugu? - tukši visi mani input lauki kurus biju sarakstījis un tagad man to nākas darīt vēlreiz. Kā lai to labo, lai būtu dati palikuši? Tā tas vienmēr ir bijis tikai ar tām lapām kuras es taisu, ieejot jebkurā citā lapā un izmēginot izmest erroru un spiežot back, viss ir savās vietās.

Link to comment
Share on other sites

<input type="text" name="username" value="<?=$_POST['username']?>"/>

Hehe, atkal ne līdz galam. Tā tie saiti ar XSS rodas.

 

Hint: kas notiks, ja input laukā ievadīs pēdiņas, "<" vai ">"?

Edited by endrju
Link to comment
Share on other sites

hmm, kādā veidā, nospiežot browsera back, tiek ielikti inputā POST dati? To var darīt bez back spiešanas, ja errori rādās tajā pašā lapā, uz kuru notika posts, un kurā atrodas forma, bet bez redirekta.

 

Par to, ja nospiež back pēc posta un visi lauki saglabājas, man liekas, ir atkarīgs no browsera paša. Cik esmu ievērojis, tad vismaz Firefox3 saglabā formas datus, izmantojot browsera back, kā arī uz soft refresh, bet arī ne vienmēr.

Normāli uz back, ja vien neizmantos kādus kūkijus, kas uz submitu saglabā datus, dati nebūs saglabājušies.

 

Cita lieta, ja back ir taisīts kā poga, kas submito datus atpakaļ uz formas lapu.

Link to comment
Share on other sites

Jā, protams, tas bija attiecināms uz gadījumu, kad lietotājs netiek nekur sūtīts tālāk.

Lai saglabātu datus pēc history.back() izpildes, datus jāsaglabā, piemēram, sesijā.

Edited by phpjanis
Link to comment
Share on other sites

Vai šādi ar vienu funkciju pietiks?

 

function quote_smart($value)
{
if (get_magic_quotes_gpc())
{
	$value = stripslashes($value);
}

if (!is_numeric($value))
{
	$value = "'" . mysql_real_escape_string($value) . "'";
}
return htmlspecialchars($value);
}

Link to comment
Share on other sites

Nu tad es nesaprotu kā man rīkoties. Man pašlaik viss izskatās šādi:

 

<input type="text" name="name" value="<?php echo $_POST['name']; ?>" />

pēc tam uz

$name = quote_smart($_POST['name']);
mysql_query("INSERT INTO table (name) VALUES ($name)");

 

un tam quote_smart() esmu noņēmis htmlspecialchars(). Tātad vēl man kaut kas šeit ir jāizdara?

 

PS strādāt jau viss strādā lieliski, bet es domāju par drošību šeit.

Edited by yeahz
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...