Skoči na vsebino

Forum ne deluje več - obiščite nas na racunalniske-novice.com




Slika

Vse o PHPju


Odgovorov v temi: 1931

#621 gipi12

gipi12

    Mojster

  • Members
  • 1.597 objav
  • Kraj:192.186.1.10
  • Interesi:Ženske:80,Punce:81

Objavljeno 09 marec 2006 - 20:47

sj niti nwm kaj bi rad... :?:

#622 mlavta1

mlavta1

    Iznajdljivec

  • Members
  • 787 objav
  • Kraj:Poljane-sredisce vesolja

Objavljeno 09 marec 2006 - 20:50

Samo da ti normalno prikaže datum, ki ga imaš v mysql bazi. Pa kako ga pravilno definirati?

#623 gipi12

gipi12

    Mojster

  • Members
  • 1.597 objav
  • Kraj:192.186.1.10
  • Interesi:Ženske:80,Punce:81

Objavljeno 09 marec 2006 - 20:56

misliš trenuten ali datum registracije?

$datum = getdate(); tkole??

#624 publikum

publikum

    Velemojster

  • Members
  • 5.974 objav
  • Kraj:Deep in code...
  • Interesi:Linux, PHP, C++, C#, .NET, ...

Objavljeno 09 marec 2006 - 22:07

function popraviDatum($input)

{

	list($leto, $mesec, $dan) = explode('-', $input);

	return $dan . '.' . $mesec . '.' . $leto;

}



function popraviDatumVpis($input)

{

	list($dan, $mesec, $leto) = explode('.', $input);

	return $leto . '-' . $mesec . '-' . $dan;

}

Prva funkcija se uporablja za izpis datuma iz podatkovne baze v obliki DD.MM.YYYY (vhodni string je v obliki YYYY-MM-DD), druga funkcija pa se uporablja za vpis datuma v podatkovno bazo (vhod in izhod sta obrnjena).

#625 gipi12

gipi12

    Mojster

  • Members
  • 1.597 objav
  • Kraj:192.186.1.10
  • Interesi:Ženske:80,Punce:81

Objavljeno 09 marec 2006 - 22:57

evo še funkcije od publikuma :bravo:

#626 mlavta1

mlavta1

    Iznajdljivec

  • Members
  • 787 objav
  • Kraj:Poljane-sredisce vesolja

Objavljeno 10 marec 2006 - 21:15

function popraviDatum($input)

{

	list($leto, $mesec, $dan) = explode('-', $input);

	return $dan . '.' . $mesec . '.' . $leto;

}



function popraviDatumVpis($input)

{

	list($dan, $mesec, $leto) = explode('.', $input);

	return $leto . '-' . $mesec . '-' . $dan;

}


Huh, tole mi je pa dokaj neznano. :wall:
Kako naj sploh vstavim v kodo? Če hočem vpisati datum v tabelo "novice".

<?

include ('config.php');

if ($_POST['poslji_novico']){

$naslov = $_POST['naslov'];

$avtor = $_POST['avtor'];

$sporocilo = $_POST['sporocilo'];

$sql = "insert into novice VALUES (NULL, '$naslov', '$avtor', '$sporocilo')";

mysql_query($sql) or die("Napaka pri vnosu:<br />" .mysql_error()); 

echo "Novica poslana";

}

?>
Kam dam?
Hvala

#627 publikum

publikum

    Velemojster

  • Members
  • 5.974 objav
  • Kraj:Deep in code...
  • Interesi:Linux, PHP, C++, C#, .NET, ...

Objavljeno 11 marec 2006 - 08:33

mlavta1, datum v pravi obliki za tip polja DATE dobiš s funkcijo date() takole:

$datum = date("Y-m-d");

Mimogrede: si kaj razmišljal o varnosti te kode, ki si jo spisal? V tvojem primeru ti lahko vsak po potrebi izbriše vse podatke iz podatkovne baze ali pa počne druge stvari, za katere ni pooblaščen... :x

#628 simy456

simy456

    Mojster

  • Members
  • 1.723 objav
  • Kraj:Okolica Radovljice

Objavljeno 11 marec 2006 - 10:28

publikum, kako bi pa to lahko naredil?

#629 publikum

publikum

    Velemojster

  • Members
  • 5.974 objav
  • Kraj:Deep in code...
  • Interesi:Linux, PHP, C++, C#, .NET, ...

Objavljeno 11 marec 2006 - 10:44

simy456, uporabiš metode za SQL injection. Ker je to zelo enostavno in ne rabiš nobene posebne programske opreme, je preprečevanje SQL injectiona OBVEZNO!!!

#630 simy456

simy456

    Mojster

  • Members
  • 1.723 objav
  • Kraj:Okolica Radovljice

Objavljeno 11 marec 2006 - 11:31

publikum, kako pa se lahko tega rešiš oz. kako narediš vse skupaj varno?

#631 publikum

publikum

    Velemojster

  • Members
  • 5.974 objav
  • Kraj:Deep in code...
  • Interesi:Linux, PHP, C++, C#, .NET, ...

Objavljeno 11 marec 2006 - 12:33

simy456, vsak podatek, ki ga dobiš od uporabnika in ga želiš vpisati v bazo, prej prefiltriraš z ustrezno funkcijo, ki je priloženga gonilniku za podatkovno bazo, npr. pri MySQL je to mysql_real_escape_string()... :ok: :ok:

#632 mlavta1

mlavta1

    Iznajdljivec

  • Members
  • 787 objav
  • Kraj:Poljane-sredisce vesolja

Objavljeno 11 marec 2006 - 16:57

Saj lahko samo jaz dodajam novice. Drugače pa najlepša hvala za opozorilo, bom naredil tako,...

#633 simy456

simy456

    Mojster

  • Members
  • 1.723 objav
  • Kraj:Okolica Radovljice

Objavljeno 11 marec 2006 - 18:02

publikum, se pravi da je to fora, da ne more za password dat še nekatere pogoje ki jih potem query izvrši. Potem lahko naredi tak pogoj > WHERE pass = '...' in sm da še svoj pogoj. mysql_real_escape_String() pa to prepreči. Sem blizu?

#634 publikum

publikum

    Velemojster

  • Members
  • 5.974 objav
  • Kraj:Deep in code...
  • Interesi:Linux, PHP, C++, C#, .NET, ...

Objavljeno 11 marec 2006 - 19:27

simy456, en lep primer:

<?php

$polje1 = $_GET['polje1'];

$polje2 = $_GET['polje2'];



mysql_query("SELECT * FROM tabela WHERE polje1 = '$polje1' AND polje2 = '$polje2'");

?>

Ti seveda od uporabnika pričakuješ, da končni naslov izgleda nekako takole:

datoteka.php?polje1=nekaj&polje2=krneki

V tem primeru izgleda poizvedba takole:

SELECT * FROM tabela WHERE polje1 = 'nekaj' AND polje2 = 'krneki'

Lahko te pa uporabnik zafrkne in ti naredi tole:

datoteka.php?polje1 = nekaj'; DROP DATABASE mysql; SELECT * FROM tabela WHERE polje1 = 'aa

In potem poizvedba (oz. več poizvedb) izgleda takole:

SELECT * FROM tabela WHERE polje1 = 'nekaj'; DROP DATABASE mysql; SELECT * FROM tabela WHERE polje1 = 'aa' AND polje2 = 'krneki';

Tole je klasičen primer SQL injectiona, ki dokazuje, da je treba pri vsakem podatku, ki izvira od uporabnika poskrbeti, da ne vsebuje nobenih znakov, ki bi lahko poškodovali poizvedbo oz. da se te znake onemogoči (največkrat z backslashanjem).

#635 simy456

simy456

    Mojster

  • Members
  • 1.723 objav
  • Kraj:Okolica Radovljice

Objavljeno 11 marec 2006 - 19:39

publikum, hvala za razlago :ok:

#636 MihaSkipster

MihaSkipster

    Govorec

  • Members
  • 2.087 objav
  • Kraj:SGC
  • Interesi:Splet, programiranje, vse kaj ma zveze z kompjuteri :D

Objavljeno 11 marec 2006 - 23:16

publikum! Ko smo že pri varnosti, še enkrat bi rad vprašal. Že dolgo bi rad začel en projekt pa nikoli ne začnem. Ker se nonstop vprašam "Bo dovolj varno?".

Mene zanima kak hekati v strani. oz. vse o načinih o hekanju v php. SQL Injectioni, PHP Injectioni in XSS napadi! Rad bi vedel kako to delati da bi na moji strani to naredo (imam na local serveru) da vidim kje so šibke točke. In seveda rad bi vedel kak le te preprečiti. Seveda ko enkrat veš kak napasti stran in poznaš svojo kodo, potem ni težko popravit!

Hvala!

#637 publikum

publikum

    Velemojster

  • Members
  • 5.974 objav
  • Kraj:Deep in code...
  • Interesi:Linux, PHP, C++, C#, .NET, ...

Objavljeno 12 marec 2006 - 11:08

MihaSkipster, za SQL injection sem že dal lep primer...

PHP injection je zelo redek, razen če uporabljaš funkcijo eval() in sorodne...

XSS napadi pa se ponavadi izvedejo tako, da v polje, kjer recimo ti od uporabnika pričakuješ, da bo vpisal nek svoj vpis, vstavi neko zlonamerno kodo, ki jo razume vsak spletni brskalnik - npr. JavaScript. In ko to stran gleda nek drug nič hudega sluteč uporabnik, se mu lahko na strani pokažejo razni popup-i, stran se lahko preusmeri na kakšno drugo, ipd.

XSS napadi se ponavadi preprečujejo s tem, da pri vseh poljih preprečiš vpis in/ali izpis JavaScript kode in podobnih. Ker funkcija str_replace tu ne zadostuje več, lahko uporabiš regularne izraze:

<?php

$content = 'Krneki....<script language="javascript">location.href = "http://www.racunalniske-novice.com";</script> Upajmo, da je varno';

$content = preg_replace("#<script(.*?)>(.*?)</script>#si", "", $content);

echo $content;

?>


#638 MihaSkipster

MihaSkipster

    Govorec

  • Members
  • 2.087 objav
  • Kraj:SGC
  • Interesi:Splet, programiranje, vse kaj ma zveze z kompjuteri :D

Objavljeno 12 marec 2006 - 15:35

Kakšen dober tutorial za reg. izraze?

#639 publikum

publikum

    Velemojster

  • Members
  • 5.974 objav
  • Kraj:Deep in code...
  • Interesi:Linux, PHP, C++, C#, .NET, ...

Objavljeno 12 marec 2006 - 15:48

Veliko jih je, malce poišči na internetu...

PS: Lahko so tudi za Perl :ok:

#640 rgolob

rgolob

    Vajenec

  • Members
  • 304 objav

Objavljeno 12 marec 2006 - 16:40

V podatkovno bazo vnašam pilote! Vsak ima svojo številko ki si jo izbere! Če je številka $number enaka številki v bazi javi napako da je številka že zasedena!

$query=mysql_query("SELECT * FROM tekme WHERE  number ='$number'") or die();

if (mysql_num_rows($query) > 0){ 

echo "<span class="pisava_red">Tekmovalna številka je žal že zasedena! Prosim izberi drugo !</span>";

}

Zdej sem pa skripto mal spremenil in sicer da poleg pilotovih podatkov vnašam še organizator_id da vem na kero tekmo tekmovalec spada! In problem se mi pojavi pri tem stavku ker bi moral vključit da mi še preveri samo tekmovalne številke pri pilotih ki imajo isti organizator_id!

$query=mysql_query("SELECT * FROM tekme WHERE organizator_id = '$organizator_id' AND number ='$number'") or die();

if (mysql_num_rows($query) > 0){ 

echo "<span class="pisava_red">Tekmovalna številka je žal že zasedena! Prosim izberi drugo !</span>";

}

No stavek sql sem napisal tko, vendar se vnos v bazo ne izvrši, kake napake pa mi tudi ne javi!

Hvala za pomoč!



Dodaj odgovor



  


1 član(ov) bere to temo

0 članov, 1 gostov, 0 anonimnih uporabnikov