Skoči na vsebino

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




Slika

Vse o PHPju


Odgovorov v temi: 1931

#1881 avinko4

avinko4

    Pomagač

  • Members
  • 462 objav
  • Kraj:Sem pozabil
  • Interesi:Vse o računalništvu in izven tega

Objavljeno 02 februar 2010 - 14:40

hmm... z image ti odpiraš php file? :huh: lahko vprašam kaj to počneš?? :S

Delam lasten generator varnostne kode. Slika s številkami in potem je vneseš v polje številke in preveri če se ujema...
Nekaj podobnega temu.
http://www.captcha.net/

#1882 Nejc

Nejc

    Gospod s kravato

  • Moderators
  • 1.058 objav
  • Spol:Moški
  • Kraj:Krško

Objavljeno 02 februar 2010 - 15:39

aja, aja.. to pa ja... sem se že ustrašu da kej druga kar bi znal bit nevarno - zate :huh:

#1883 MoOoG

MoOoG

    Govorec

  • Members
  • 2.032 objav
  • Spol:Moški
  • Kraj:LaLaLand

Objavljeno 06 februar 2010 - 14:15

Ve kdo kako iz Artisteerja svoj izdelek preneseš v joomlo?

#1884 BriskiThaMan

BriskiThaMan

    Vajenec

  • Members
  • 290 objav
  • Spol:Moški

Objavljeno 09 februar 2010 - 15:51

Ali pa v html/css kodo? (to za joomlo bi tudi mene zanimalo)

#1885 MoOoG

MoOoG

    Govorec

  • Members
  • 2.032 objav
  • Spol:Moški
  • Kraj:LaLaLand

Objavljeno 09 februar 2010 - 15:58

Ali pa v html/css kodo? (to za joomlo bi tudi mene zanimalo)


Sem ugotovil za artisteerja, kako se to naredi...
Extensions > Install/Uninstall, potem pa imaš tam možnosti kako jo boš inštaliral. Ko naložiš, greš: Template manager in izbereš svoj template in ga daš pod ''Default''. :huh:

#1886 BriskiThaMan

BriskiThaMan

    Vajenec

  • Members
  • 290 objav
  • Spol:Moški

Objavljeno 10 februar 2010 - 23:16

Hvala :huh: Zelo uporabno:)

#1887 avinko4

avinko4

    Pomagač

  • Members
  • 462 objav
  • Kraj:Sem pozabil
  • Interesi:Vse o računalništvu in izven tega

Objavljeno 18 februar 2010 - 19:49

Zopet rabim vašo pomoč.
Iz tabele izpisujem vse vrednosti po vrsti npr. čas, naslov, besedilo zopet čas, naslov... želim narediti link iz vrednosti naslov, ki odpre novo stran v katerem bi izpisal samo tiste vrednosti ki so za tisti naslov. Upam, da razumete. Kako se naredi taka SQL poizvedba?

#1888 zaxy

zaxy

    Iznajdljivec

  • Members
  • 855 objav
  • Kraj:<?=1001101?>

Objavljeno 18 februar 2010 - 20:16

SELECT * FROM vrednosti WHERE naslov = 'naslov' ? :clap2:

#1889 avinko4

avinko4

    Pomagač

  • Members
  • 462 objav
  • Kraj:Sem pozabil
  • Interesi:Vse o računalništvu in izven tega

Objavljeno 19 februar 2010 - 14:14

zaxy kako pa naj izpišem podatke da bodo izisani le tisti za tisto novico? Ker sedaj se mi izpišejo vsi.

#1890 zaxy

zaxy

    Iznajdljivec

  • Members
  • 855 objav
  • Kraj:<?=1001101?>

Objavljeno 19 februar 2010 - 14:30

Recimo, da imaš v tabeli še ID novice, recimo - novica_id.

Potem narediš link do te novice takole:

$sql = "SELECT * FROM novice";
$res = mysql_query($sql);

while($arr = mysql_fetch_assoc($res)) {
  echo '<a href="novica.php?id=' . $arr['novica_id'] . '">' . $arr['naslov'] . '</a><br />';
}

Potem v novica.php pa imaš takole SQL poizvedbo:

$novica_id = mysql_real_escape_string((int)$_GET['id']);

$sql = "SELECT * FROM novice WHERE novica_id = '{$novica_id}' LIMIT 1";
$q = mysql_query($sql);
....

Recimo primer kode. :clap2:

#1891 avinko4

avinko4

    Pomagač

  • Members
  • 462 objav
  • Kraj:Sem pozabil
  • Interesi:Vse o računalništvu in izven tega

Objavljeno 19 februar 2010 - 14:50

zaxy uredil hvala! :clap2:

#1892 zaxy

zaxy

    Iznajdljivec

  • Members
  • 855 objav
  • Kraj:&lt;?=1001101?&gt;

Objavljeno 19 februar 2010 - 18:05

Super! :clap2:

#1893 xfirestorm

xfirestorm

    /dev/null

  • Moderators
  • 3.783 objav
  • Spol:Moški
  • Kraj:Murska Sobota
  • Interesi:Airsoft

Objavljeno 06 maj 2010 - 19:53

Ker se ravno v službi ukvarjam z malo bolj obsežno skripto, tako po domače sinhronizacija koledarja privatne aplikacije z eGroupware koledarjem in kasneje z mobilnimi telefoni sem se bil prisiljen tudi malo poigrati z PHP Sessions. In skoraj na vsaki strani ki opisuje to zadevo, vsepovsod piše da te seje same po sebi niso varne in da je potrebno za varnost poskrbeti z dodatnim preverjanjem. Nikjer, vsaj na brzinco, pa ne piše kako dejansko za to zadevo poskrbeti.

Pa da ne bomo kar v tri dni, bomo zastavili nek problemček z sejami, kako se inicializirajo itd.
Torej, seja, prvo kot prvo mora biti izvedena/zagnana pred kakršno koli drugo kodo, torej najbolje da takoj na vrhu dokumenta:
<? session_start(); ?>
V primeru da je v php.ini session.auto_start nastavljen na FALSE(0) potem je to dovolj. To pomeni da tudi če zaporedoma zapišeše session_start(); večkrat, se bo seja pričela samo enkrat in ne bo nobenih napak.
V primeru da je pa session.auto_start nastavljen na TRUE(1) potem pa to ne bo dovolj, saj se bo seja zagnala tolikokrat kolikokrat bo izveden session_start(); stavek. In ker se seje po koncu izvajanja skripte ne končajo, kar je tudi vredu, saj bomo rabili podatke iz seje tudi v drugih nadaljnih skriptah, se bo izvedel session_start(); ponovno na drugi strani in izgubili bomo vse podatke ki so bili shranjeni v sejo na naslednji strani. Zato je zagon seje potreben tako da najprej preverimo če seja že obstaja. To najlažje preverimo tako:
<? if(session_id() == "") {
session_start();
}

Dejansko pomeni če je session_id() enak "", torej ni sejnega IDja in pomeni da seja ne obstaja in jo zaženemo.

V nadaljni kodi shranjujemo podatke v sejo enako kot v navadno polje(Array):
$_SESSION['neka-oznaka'] = $podatki;
Neko stran izvedemo do konca, shranimo neke podatke v sejo in uporabnik klikne na link ki ga popelje do naslednje strani, tam enako na vrhu vključimo delček kode ki zažene/ponovno vzpostavi obstoječo sejo in lahko podatke iz seje normalno preberemo in zapišemo nove. Pač po potrebi.
Ko končamo, ponavadi takrat ko se uporabnik odjavi še sejo uničimo:
<? session_destroy(); ?>
Z tem smo spraznili vse podatke iz seje in jo uspešno zaključili.

Vendar, kako smo sedaj varni? Kako seja lahko sploh ogrozi varnost aplikacije?
Ker je to nelegalno se ne bom spustil v detajle ampak samo grobo poglejmo kako lahko napadalec izkoristi sejo.
Vsaka vzpostavljena seja ima svoj unikaten ID, katerega lahko napadalec pridobi preko različnih načinov in z pomočjo tega IDja lahko prevzame sejo in pride do vseh podatkov ki so shranjeni v seji. Kar morda ni takšen problem če v seji ni shranjenih občutljivih podatkov, ampak ko sistem ugotovi da napadalec ustreza vzpostavljeni seji ima tudi dostop do vseh kotičkov aplikacije kot jih ima napadeni uporabnik. Kar pa ni več tako nedolžno.
Vendar kako se pred tem zaščititi?
Enostavno, ob vzpostavitvi seje, tisti, ta prvi, shrani neke podatke o ustvarjalcu oz. originalnem odjemalcu strani. Recimo da shranimo IP in neke podatke o njegovem brskalniku:
<?
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; // odjemalčev IP
$_SESSION['browser'] = $_SERVER['HTTP_USER_AGENT']; // odjemalčev brskalnik
?>

Pomembno je da ta del kode izvedemo samo takrat ko se seja prvič vzpostavi. Naslednjič vedno samo te stvari preverjamo, če se trenutne ujemajo z shranjenimi v sejo. To nam prinese nekoliko višjo raven varnosti v sejah. Nikakor ne edino in tudi ne najboljšo, verjetno pa najenostavnejšo za programerja. :)

Naj vam bo v pomoč :)

#1894 TechFreak:)

TechFreak:)

    Spammer

  • Members
  • 4.591 objav
  • Spol:Moški
  • Kraj:Celje

Objavljeno 07 maj 2010 - 05:01

Od tebe pa kaj takšnega nikakor ne bi pričakoval. Seje obstajajo že nekaj let in prvič slišim, da bi se jih omejevalo na IP.

ADSL uporabnikom se IP spremeni vsakih 24ur. Kaj če je uporabnik ravno med to spremembo na tvoji strani in bo izgubil vse podatke o seji? Kaj če je uporabnik v službi, kjer se mu IP spremeni ob vsakem requestu? Tudi kakšni ISPji lahko imajo proxy, ki spremeni IP naslov ob vsakem requestu.

Seje so varne, ker je težko ugotoviti kakšen niz za piškot se bo generiral. Še vseeno lahko nekdo prisluškuje povezavi in s tem pobere piškot, ampak HTTPS bo odpravil te težave.

#1895 xfirestorm

xfirestorm

    /dev/null

  • Moderators
  • 3.783 objav
  • Spol:Moški
  • Kraj:Murska Sobota
  • Interesi:Airsoft

Objavljeno 07 maj 2010 - 09:53

Od tebe pa kaj takšnega nikakor ne bi pričakoval. Seje obstajajo že nekaj let in prvič slišim, da bi se jih omejevalo na IP.

ADSL uporabnikom se IP spremeni vsakih 24ur. Kaj če je uporabnik ravno med to spremembo na tvoji strani in bo izgubil vse podatke o seji? Kaj če je uporabnik v službi, kjer se mu IP spremeni ob vsakem requestu? Tudi kakšni ISPji lahko imajo proxy, ki spremeni IP naslov ob vsakem requestu.

Seje so varne, ker je težko ugotoviti kakšen niz za piškot se bo generiral. Še vseeno lahko nekdo prisluškuje povezavi in s tem pobere piškot, ampak HTTPS bo odpravil te težave.


Saj so seje kratkotrajne. Zakaj pa ne bi omejeval na IP? Kaj pa ponudniki ki ne nudijo HTTPS? Tudi takšni obstajajo.
Za nek forum morda ni tako pomembno da seja poteče, saj nas ima verjetno večina da si "zapomni" prijavo v forum. Za neke delikatne stvari, katere lahko vidi samo tisti uporabnik pa raje vidim da se vsakič ponovno mora logirat, pa da mu po nekem času seja poteče.

Na ISP ki bi ob vsakem requestu menjeval IP pa še nisem naletel. Vsaj v Sloveniji ne.

#1896 TechFreak:)

TechFreak:)

    Spammer

  • Members
  • 4.591 objav
  • Spol:Moški
  • Kraj:Celje

Objavljeno 07 maj 2010 - 12:54

Seje so kratkotrajne, ampak med tem času se lahko uporabniku zamenja IP.

Na ISP ki bi ob vsakem requestu menjeval IP pa še nisem naletel. Vsaj v Sloveniji ne.

V tujini jih je več, poleg tega pa moraš računati na podjetja, kjer je vsak request poslan iz drugega IPja.

Seje so varne dokler je povezava med odjemalcem in strežnikom varna. Če ti je varnost pomembna, potem boš uporabil SSL, lahko pa tudi kakšno drugo avtenticiranje s strani uporabnika (podobno kot imajo e-banke izvedeno).

Namesto IPja je bolje uporabiti $_SERVER['HTTP_USER_AGENT'], ki pa se v večini primerov ne bo spreminjal med obiskom.
Lahko pa uporabiš tudi session_regenerate_id();, kjer se ID generira ob vsakem requestu.

#1897 AFowl

AFowl

    Poročevalec

  • Members
  • 521 objav
  • Spol:Moški
  • Kraj:Škofja Loka

Objavljeno 19 avgust 2010 - 14:00

Mene pa zanima zakaj tale koda
<?php
if ( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
{
	$mode = ( isset($HTTP_GET_VARS['mode']) ) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
	$mode = htmlspecialchars($mode);

	if ( $mode == 'vsa' )
	{
	echo "<title>...</title>";
		include("../sl/competitions/vsa.php");
	} 
	else if ( $mode == 'rezultati' )
	{
	echo "<title>...</title>";
		include($phpbb_root_path . '/competitions/rezultati.php');
	}
	else { echo "<title>...</title>";}
	
	}

?>
ne dela na php 5.2.3 verziji :S

#1898 xfirestorm

xfirestorm

    /dev/null

  • Moderators
  • 3.783 objav
  • Spol:Moški
  • Kraj:Murska Sobota
  • Interesi:Airsoft

Objavljeno 19 avgust 2010 - 14:04

In kakšen je error msg?

#1899 zaxy

zaxy

    Iznajdljivec

  • Members
  • 855 objav
  • Kraj:&lt;?=1001101?&gt;

Objavljeno 19 avgust 2010 - 14:37

Poskusi $HTTP_GET_VARS zamenjati z $_GET in $HTTP_POST_VARS s $_POST. :rolleyes:

#1900 AFowl

AFowl

    Poročevalec

  • Members
  • 521 objav
  • Spol:Moški
  • Kraj:Škofja Loka

Objavljeno 19 avgust 2010 - 15:43

Poskusi $HTTP_GET_VARS zamenjati z $_GET in $HTTP_POST_VARS s $_POST. :rolleyes:

To dela. Najlepša ti hvala.

@xfirestorm nobenega errora ni bilo samo strani ni pokazalo.



Dodaj odgovor



  


2 član(ov) bere to temo

0 članov, 2 gostov, 0 anonimnih uporabnikov