Jump to content
php.lv forumi

L4URO

Reģistrētie lietotāji
  • Posts

    29
  • Joined

  • Last visited

Posts posted by L4URO

  1. Principā jau vienkāršibas labad var pārbaudīt vai sesija ir iesetota un neģenerēt jaunu un izmantot visā sesijas laikā vienu un to pašu tokenu.

    Jo, ja pārģenerēsi tokenus, tad atverot vairākos tabos kādas formas, iepriekšējās vairs nestrādās.

     

    šis ir domāts loginam 

  2. 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 !

  3. č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 !

  4. 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)

  5. 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?

  6.  Č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!

  7. 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?

  8. Nū, es vispār neko nesapratu.

    Varētu uzrakstit vēlreiz un lēnāk.

    1. cilvēks aizpilda input fieldus
    2. tiek uztaisīta bilde,kura satur to,ko viņš rakstīja (tas glabājas mainīgajā,jo tur ir arī cita informācija)
    3. katrai bildei ir unikāls links un blakus ir facebook poga,uz kuras uzspiežot var sharot to bildi.
  9. č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š!

  10. 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яЫ C
     
    2!!222222222222222222222яА P" яД          
    я µ  } !1AQa"2Ѓ‘Ў#B±БRСр$3br‚
    &(*456789:DEFGHIJSTUWXYZcdefghxyzѓ„…†‡€‰Љ’“”•–—™љўЈ   
     µ  !1Aaq"2ЃB‘Ў±Б#3RрbrС
     
    sitadu baigi daudz :D
  11. (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);
     
    ?>
    
    

    post-9782-0-25343500-1384897849_thumb.jpg

  12. 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/

    http://php.dzone.com/news/top-10-php-frameworks

    http://jonathanmh.com/best-php-mvc-frameworks-of-2013/

    es gribēju vienkārši papraktizēties ar pliku PHP !

  13. <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"> ?

  14. č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 ir 
    localhost/makeFromTemplate/ makeFromTemplate.php ? answer1=NESANAK&answer2 = ATKAL & answer3=NESANAK & answer4=ATKAL &roll=Make UN makeFromTemplate.php nekas neparādas
     
     Ko jūs varat ieteikt?
     
     
    Paldies! 
  15. 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ē. 

  16. 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


×
×
  • Create New...