L4URO
-
Posts
29 -
Joined
-
Last visited
Posts posted by L4URO
-
-
CSFR
in Iesācējiem
CSRF ir aizardzība, nevis pret postošanu no urļa, bet no citas lapas. No urļa tāpat nevar postot, jo ar urli nevar iesetot POST datus.
Un pamatā aizsardzība darbojas tā, ka tavā lapā pie formas līdzi nāk tokens, kurš ir unikāls katram lietotājam un sveša lapa nezin šo tokenu, tāpēc postojot no tavas lapas tas ir pareizs, bet no svešas nav.
paldies par atbildi !
-
CSFR
in Iesācējiem
Tagad sapratu,kāpēc vajag unsetot sesiju,lai varetu generet jaunu tokenu un veidot jaunu sesiju,vai ne?
-
CSFR
in Iesācējiem
čau,tauta
tā tad re kur ir kods
Token.php fails
<?php class Token { public static function generate () { return Session::put(Config::get('session/token_name'),md5(uniqid())); } public static function check($token){ $tokenName=Config::get('session/token_name'); // no config faila paķer token_name ,token_name = token; if(Session::exists($tokenName) && $token === Session::get($tokenName)){ Session::delete($tokenName); return true; } return false; } } ?>
Session.php
<?php class Session{ public static function exists($name){ return (isset($_SESSION[$name])) ? true : false; } public static function put($name,$value){ return $_SESSION[$name] = $value; } public static function delete($name){ if(self::exists($name)){ unset($_SESSION[$name]); } } public static function get($name){ return $_SESSION[$name]; } } ?>
<?php require_once 'core/init.php'; if(Input::exists()){ // parbauda vai kaut kas ir submitots (vai $_POST array nav tuksš) //echo Input::get('username'); if(Token::check(Input::get('token'))){ // metode,kas paņem token input fielda vērtību,tas būtu tas pats,kā $_POST['token']; echo "I RAN GUYS ! ! ! <br>"; KODS KODS KODS KODS } } ?> <form action="" method="post"> <div class="field"> <label for="username">Username</label> <input type="text" name="username" id="username" value="<?php echo escape(Input::get('username')); ?>" autocomplete="off"> </div> <input type="hidden" name="token" value="<?php echo Token::generate();?>"> <input type="submit" value="Register"> </form>
Tā tad,cilvēks nevar submitot caur url.
Es varu saprast secību,katru reizi,kad refrešo lapu tiek uzģenerēts jauns TOKENS un uztaisīta sesija ar vārdu token un vērtību ,kas ir vienāda ar to,kas tiek ģenerēts. Ja tiek uzspiesta poga mēs pārbaudām ,vai tokena vērtība,kas ir hidden input fieldā ir vienāda ar tokena vērtību,kas ir iestorota sesijā,ja tā ir tad mēs unsetojam sesiju. Es pareizi sapratu? Es pie koda pievienoju komentārus.
ja ieiet caur google chrome "parbaudit elementu" un nomaina input fielda genereto tokenu un uzspiez submit,tad tas tokens nesakrit ar sesijas tokenu un nekas nenotiek -> sesija netiek dzēsta un mēs atgriežam false un kods,kas ir aiz if(Token::check(Input::get('token'))){ nedarbojas,jo mēs neatgriezām true
Bet es nesaprotu,kā tas viss darbojas,ka nevar submitot no url un ir aizsardzība un vajag unsetot sesiju,ja tokens sakrit ar tokenu kas ir sesija,vai kāds var paskaidrot ?
Paldies !
-
var_dump($_POST);
un paskaties, kas skaitās empty()
tikai neieķeksēts checkbox un radio (un nepievienots file) netiek nopostots formā
jup,tukši arī ieiet POST arrayā,kad uzspiež submit
array (size=4) //man ir 4 input fieldi
'username' => string '' (length=0)
'password' => string '' (length=0)
'password_again' => string '' (length=0)
'name' => string '' (length=0)
-
ja man ir
if(Input::exists()){ echo "yeaa"; }
public static function exists($type = 'post'){ switch ($type) { case 'post': return (!empty($_POST)) ? true : false; break; case 'get': return (!empty($_GET)) ? true : false; break; default: return false; break; } }
un tad man ir form ar vairakiem input fieldiem,ja pat es neko neaizpildu,bet uzspiezu submit pogu man uz ekrana izvada "yeaa"; ,bet kapec,ja es parbaudu vai $_POST vai $_GET masīvs (array) nav tukšs ,tad es atgriežu true un man darbojas viss iekšā if(Input::exists()){ } ????
tā tad sanāk,ka pēc submitošanas tukšums arī padara $_POST vai $_GET masīvus par netukšiem?
-
L4URO, nevis prakstiski, bet ir.
Mainīgajam "user" Tu piešķirt attiecīgo vērtību, ko saturn mainīgais _instance.
"ķipa $user = $_instance"
ok,tam ari gribeju dzirdet apstiprinajumu :D
-
Abiem. T.i., abi mainīgie referencē uz vienu objektu.
ok,paldies,bet kaa ir ar sho? $user = DB::getInstance(); , tad $user praktiski ir vienāds ar $_instance mainīgo ?
parejo es sapratu?
-
Čau,
Tā tad,cik saprotu,tad $_instance mainīgais DB klasē ir DB instance,kad funkcija tiek izsaukta,kam pieejamas visas DB klases funkcijas.Kad tiek izsaukts self::$_instance = new DB(); tad aiziet __constructor metode un $_instance tiek pievienots _pdo, tad šis mainīgais tiek atgriezts. Es pareizi tik tālu sapratu? Un tad,kad kādā mainīgajā raksta $user = DB::getInstance(); , tad $user praktiski ir vienāds ar $_instance mainīgo? Un ja raksta $user = DB::getInstance()->query(); ,tad query funkcija pieder $user mainigajam vai $_instance metodei?
$user = DB::getInstance();
<?php class DB { private static $_instance = null; private $_pdo, $_query, $_error=false, $_results, $_count=0; private function __construct () { try { $this-> _pdo = new PDO('mysql:host='.Config::get('mysql/host').';dbname='.Config::get('mysql/db'),Config::get('mysql/username'),Config::get('mysql/password')); }catch(PDOException $e){ die($e->getMessage()); } } //singleton,the instance can be created only once public static function getInstance(){ if (!isset(self::$_instance)) { self::$_instance = new DB(); } return self::$_instance; } }
Paldies ,ja kaut ko nesaprotat, tad prasat!
-
tad cloudinary ir labākais variants,pagaidām ? es uploadoju bildi,tad tai ir links,es bildi no cloudinary savā lapā parādu lietotājam bildi un tad katru reizi mainu facebook share linka [images][0] vērtību ?
<a href="http://www.facebook.com/sharer/sharer.php?s=100&p[url]=http://www.majaslapa.com&p[images][0]=http://res.cloudinary.com/cloudinary-pubnub-demo/image/upload/c_limit,h_600,w_600/v1385648097/hz6whk0bjd6vspgshmbv.png&p[title]=texttexttexttexttext!&p[summary]=texttexttexttexttext"></a>
es sapratu domu?
-
Nū, es vispār neko nesapratu.
Varētu uzrakstit vēlreiz un lēnāk.
- cilvēks aizpilda input fieldus
- tiek uztaisīta bilde,kura satur to,ko viņš rakstīja (tas glabājas mainīgajā,jo tur ir arī cita informācija)
- katrai bildei ir unikāls links un blakus ir facebook poga,uz kuras uzspiežot var sharot to bildi.
-
čau,tā tad ja es tā gribu
cilvēks aizpilda input fieldu - > tiek uzģenerēta bilde ar GD bibliotēku (tik tālu viss ir) , bet kā es varu uzģenerēt unikālu url uzģenerētajai bildei,lai tas parādas url vietā un to linku,uzspiezot uz pogas vai linka, varētu sharot facebooka un tad facebooka paraditos tā bilde.
Man ir generate.php fails,kurš saņem caur sesiju datus(tas ir mainigais,kurš satur to ,ko ievada lietotājs un vēl manis pielikto tekstu) un uztaisa jpeg bildi,bet url pēc ģenerēšanas ir .../path/to/generate.php ,bet es laikam vajadzētu .../path/to/generate.php/randomlink/randomnumbers/blablabla.jpg un tad darīt visu kā iepriekš. Un submit man ir tikai failā,no kura nāk dati,bet generate.php izvada tikai bildi uz ekrāna.
sharing funkciju var ietvert kaut vai tajā generate.php , būtu vispār labi ,ja varētu uzģenerēt bildi generate.php ,tad nosūtīt to uz failu,no kurienes nāk dati, un izvadīt uz ekrāna bildi (man tajā lapā,no kurienes nāk dati ir arī citas lietas) un url vietā ir tās ģenerētās bildes url (vai arī nav,bet blakus ir facebook poga uz kuras uzspiežot ir iespēja šērot to bildi),lai to varētu šērot,kad nokopē ģenerēto url un ar to url ieiet tad parādas tikai bilde.
generate.php fails
<?php session_start(); header('Content-type: image/jpeg'); if (isset($_SESSION['yourOwn'])) { $result = $_SESSION['yourOwn']; $email_lenght= strlen ($result); $font_size=4; $image_height = ImageFontHeight ($font_size); $image_width = ImageFontWidth ($font_size) * $email_lenght; $image = imagecreate($image_width, $image_height); imagecolorallocate($image, 255, 255, 255); $font_color = imagecolorallocate($image, 0, 0, 0); imagestring($image, $font_size, 0, 0, $result, $font_color); imagejpeg($image); unset($_SESSION['yourOwn']); imagedestroy($image); } ?>
varbūt varat iedot tutorialus vai vienkārši paskaidrot loģiku,kā darīt.
Ja ir neskaidrības,tad prasat. Būšu ļoti priecīgs,ja kāds var palīdzēt!
Liels paldies jau iepriekš!
-
Tak paskaties kāds ir src tam img tagam, noteikti kaut kas ..../path/to/generate.php
ja ta ir
-
lejuplādēt marrtin, lejuplādēt!
butthurt much ?
-
Vari pamēģināt šādu headeri pielikt...
header('Content-Disposition: attachment; filename="blabla.jpg"');
nezinu gan, vai strādās :)
strada,man ir ta ka to uzgenereto bildi atver jauna cilnee un tad es gribeju lai cilvekam ir iespeja ieseivot
-
Ko satur tas .php? Ne jau tak īsto kodu, ne? :D
ja es pats uzlieku .jpg tipu tad ieseivoja kaa bilde bet kad saglabaa kaa php skriptu tad tajaa ieksa ir
яШяа JFIF яю >CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), default qualityяЫ C$.' ",#(7),01444'9=82<.342яЫ C2!!222222222222222222222яА P" яДя µ } !1AQa"2Ѓ‘Ў#B±БRСр$3br‚&(*456789:DEFGHIJSTUWXYZcdefghxyzѓ„…†‡€‰Љ’“”•–—™љўЈµ !1Aaq"2ЃB‘Ў±Б#3RрbrСsitadu baigi daudz :D -
(skatīt bildi pielikumā)
tā tad es veiksmīgi ģenerēju bildi no teksta,tad ,uzspiežot labo peles taustiņu man ir iespēja "saglabāt attēlu kā " ,bet ,kad uzspiežu man piedāvā saglabāt nevis kā jpeg failu,bet kā php skriptu.
Kods,lai uztaisītu bildi (sesija ir tāpēc,ka ienesu saturu no cita faila) :
<?php session_start(); header('Content-type: image/jpeg'); $email = $_SESSION['varname']; $email_lenght= strlen ($email); $font_size=4; $image_height = ImageFontHeight ($font_size); $image_width = ImageFontWidth ($font_size) * $email_lenght; $image = imagecreate($image_width, $image_height); imagecolorallocate($image, 255, 255, 255); $font_color = imagecolorallocate($image, 0, 0, 0); imagestring($image, $font_size, 0, 0, $email, $font_color); imagejpeg($image); imagedestroy($image); ?>
-
Iesaku tev palasīt, kas ir MVC un, kas ir freimworki, un izmantot kādu no populārajiem PHP freimworkiem.
Problēmas, kuras tu mēģini risināt, jau sen ir 100x labāk atrisinātas.
iedošu hintus:
http://www.phpframeworks.com/top-10-php-frameworks/
es gribēju vienkārši papraktizēties ar pliku PHP !
-
<form action="nezinuKasJaliekJoManNesanak">
šī vietā action liec tukšu "", tad submits ies uz to pašu failu, kas izvada formu. Tikai formā ieliec vienu hidden lauku ar vērtību 1 un tad ar $_GET['myform'] detektē, ka ir submits. Un labāk method liec "post" un tad mainīgos ielasi caur $_POST masīvu. Pēc submit datu apstrādes parasti taisa redirektu (kautvai uz to pašu lapu vai uz kādu msg), lai lietotājs nevar otrreiz nejauši nosubmitēt datus.
Otrkārt, Tev kods ir slimīgs. Tur, pirmajā blokā, kur:
...... switch ($p) { case 'PAGE2': include 'PAGES/PAGE2.php'; break; .....
kāpēc tu inklūdes deklarē kodā, ja tā vietā var izmantot vienu include, kur tu, balstoties uz $p uzkonstruē inklūdējamā faila ceļu?
include 'PAGES/'.$p.'.php';
tikai pirms tam ar file_exists pārbaudi, ja eksistē tāds. Ja nē, tad inclūdo to, kas Tev tagad iet zem default: bloka.
redirektu taisit ar header location ? un es nesapratu par to hidden lauku. tu domaa <input type="text" value="1" style="display:none"> ?
-
čau,tā tad man ir viena lapa makeFromTemplate.php ,k as sevī includo jaunu lapu
<div id="loadedContent"> <?php if (isset($_GET ['page'])) { $p = $_GET ['page']; switch ($p) { case 'PAGE2': include 'PAGES/PAGE2.php'; break; case 'PAGE3': include 'PAGES/page3.php'; break; case 'PAGE4': include 'PAGES/page4.php'; break; case 'PAGE5': include 'PAGES/page5.php'; break; default: include 'PAGES/PAGE2.php'; break; } } ?> </div>
un tad skatoties pec url es includoju lapu iekšā makeFromTemplate.php lapā,tad piemeram es esmu includojis PAGE2.php un tās saturs (skatit nakamo kodu) parādas makeFromTemplate.php , bet...<form action="nezinuKasJaliekJoManNesanak" name="foorm" method="GET"> <input type="text" autocomplete="off" name="answer1"><br> <input type="text" autocomplete="off" name="answer2"><br> <input type="text" autocomplete="off" name="answer3"><br> <input type="text" autocomplete="off" name="answer4"><br> <input type="submit" name="roll" value="Make"> </form> <?php if(isset($_GET['answer1'])&&isset($_GET['answer2'])&&isset($_GET['answer3'])&&isset($_GET['answer4'])){ $answer1=$_GET['answer1']; $answer2=$_GET['answer2']; $answer3=$_GET['answer3']; $answer4=$_GET['answer4']; if(!empty($answer1)&&!empty($answer2)&&!empty($answer3)&&!empty($answer4)&&!empty($answer5)&&!empty($answer6)&&!empty($answer7)&&!empty($answer8)){ $output= "Welcome $answer1 and $answer2 you all are my friends"; echo $output; }else{ echo "fill all fields,my friend!"; } } ?>
... ko es gribu ir,ka pēc tās formas submitošananas es varu redzēt $output mainīgo makeFromTemplate.php lapā. Nezinu,ko rakstīt pie form action,jo nekas nesanāk.tad,kad es includoju page2.php viss ir ok url ir localhost/ makeFromTemplate / makeFromTemplate.php ? page = PAGE2 , bet kad submitoju formu kas ir page2.php url irlocalhost/makeFromTemplate/ makeFromTemplate.php ? answer1=NESANAK&answer2 = ATKAL & answer3=NESANAK & answer4=ATKAL &roll=Make UN makeFromTemplate.php nekas neparādasKo jūs varat ieteikt?Paldies! -
-
Katram lietotājam sesijā glabā viņa pašreizējo ID (1 vai 2)
Tad tam, kas ir 1. iedod formu un rezultātu saglabā db un piestorē klāt arī lietotāja ID kam nākošajam jāpilda.
Pie katra refreša atlasi no db ierakstu ar to ID, kas pašlaik ir lietotājam.
bet uz ko balstoties saglabāt sesiju? Login ,kad ielogojas es saglabāju sesiju balstoties uz to,vai cilvēks ir ievadījis tādus datus,kādi pastāv datubāzē,tad es sastādu sesiju un pēc sesijas balstoties izvadu pārējo info par viņu,kas ir datubāzē.
-
i am building a web app , how can i make that there are 2 users,1st user fills 1st input then presses submit and only then 2nd user can fill 2nd input,then he presses submit and again 1st user can do that. once all fields are filled there is big submit button,that puts value of the fields somewhere else. and 1st user cant see what 2nd writes,but he could technically see ,but i could hide or put something on the input that doesnt "belong" to him.
Do you have any ideas,if yes,could you give me tutorials?
Varat atbildet latviski :D
-
Mani interesē web development,tāpēc laikam PHP,kurš speciāli tam ir veidots. pythonu/rubyu pēc tam mācīšos,maybe...
-
Čau !
Pagaidām pārzinu js,jquery un angularJS,bija doma talak macities node.js.
Bet vai ir tā vērts?
Vai labāk mācīties PHP + kāds frameworks?
CSFR
in Iesācējiem
Posted
šis ir domāts loginam