20 Sep

PHP-də sadə alış-veriş zənbili

Bu yaxınlarda aldığım sayt sifarişlərinin birində sadələşdirilmiş elektron mağazanın olması istənmişdi. Daha öncə bu barədə nə düşünmüşdüm, nə də ki, bir elektron mağazanın hansı prinsiplərlə işlədiyi haqda məlumatım var idi. İnternetdə bir qədər araşdırma apardım, elə də dəyərli məlumat tapa bilmədim, amma ingilisdilli bəzi saytlardan bəhrələndim… Sözü uzatmadan keçək mətləbə.

Biz istəyirik ki, bizim kitab mağazamızdakı məhsulların siyahısını, qiymətlərini görək, və onu zənbilə əlavə edə bilək. “Əlavə et” düyməsini basdıqda birbaşa zənbilə keçid alaq və oradakı məhsulların siyahısı, sayı qiyməti və ümumi borcumuzu gorə bilək.

Başlayaq bazamızdan.

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE books (
id int(6) unsigned NOT NULL auto_increment,
title varchar(100) NOT NULL default '',
author varchar(100) NOT NULL default '',
price decimal(3,2) NOT NULL default '0.00',
PRIMARY KEY (id)
) TYPE=MyISAM;
 
INSERT INTO books VALUES (1, 'Əli və Nino', 'Qurban Səid', '24.99');
INSERT INTO books VALUES (2, 'Əlkimyaçı', 'Paulo Koelyo', '27.99');
INSERT INTO books VALUES (3, 'Boz atın belində', 'Cəlal Bərgüşad', '14.99');

Read More

15 Jul

Mysql и Ruby.

Пользуясь свободным выпавшим мне временем, решил углубить свои знания из Ruby. В следующем скрипте нет ничего особенно сложного, обычный скриптик создающий новую базу данных и добавляющих туда информацию. Короче, задача была такова: создать базу данных некоторых персон куда можно вводить имя, возраст, пол  и соответствующая должность на работе. Работаем избирательно через Mysql. Далее предпологается уже установлено в системе собвстенно Mysql сервер и  Ruby гем. Скриптик будет выглядеть следющим образом:

#Загружаем нужные гемы для работы

require 'rubygems'
require 'mysql'

puts "Welcome to Database Manager Programm!"

#Соединяемся с базой данных
 db = Mysql.connect('localhost','db_user_name','db_user_password','db_name')
 puts "Connected to the Mysql DB"

#Создаем таблицу
db.query("create table people(id integer primary key auto_increment,age integer,name varchar(30),job varchar(50),gender varchar(6))")
#Здесь не забываем добавить auto_increment
#Вводим данные в таблицу
puts "Insert the name, what you wont to add in to the DB:"
name = gets.chomp

puts "Insert the age of this person:"
age = gets.chomp

puts "Insert the gender of this person:"
gender = gets.chomp
puts "Insert the job of this person:"
job = gets.chomp

#Вводим данные
db.query("INSERT INTO people(name,age,job,gender) VALUES('#{name}','#{age}','#{job}','#{gender}')")

#Выводи то что получилось
 begin
  query=db.query('SELECT * FROM people')
  query.each_hash do |h|
  puts h.inspect
 end
end
#Закрываем соединение
db.close

Сохраняем в файле, например mysql.rb и выполняем:

1
$ ruby mysql.rb
02 Apr

PostgreSQL и ROR 3.

После разработки нашего приложения на Ruby on Rails 3 , необходимо развернуть его на более мощном РСУБД. Одним из таких являеться PostgreSQL. Дополнительную информацию можно найти на официальном сайте и в википедии.
Собственно для перехода к дальнейшим действиям, подразуемваеться что у нас в системе установлен:
1) PostgreSQL.
2) Создан пользователь.
3) Создана таблица(Можно эксперементировать с стандартным пользователем – postgres)
Если же нет – то рекомендую обратиться на официальную страницу(для Debian – в Debian wiki), где подробнейшим образом описана установка PostgreSQL. Создание юзера и пустой базы данных можно найти в официальной документации.
И так, у нас уже установлен PostgreSQL, Ruby 1.9.2 , стандартный набор гемов, rvm, Ruby on Rails 3.
Чтоб связать Ruby и PostgreSQL, необходимо установить дополнительные пакеты,если они у нас еще не установлены: Read More

25 Dec

“Saytımızda kim var, kim yox” və ya qonaqlarımızın gəliş-gedişini necə izləyək?

Əsasən sosial şəbəkə, tanışlıq, çat kimi insanların ünsiyyət üçün müraciət etdikləri saytlarda hazırda saytda neçə nəfərin olması, istifadəçilərin siyahısı, gün ərzidə qonaqların sayı və s. Kimi göstəricilərin olması vacib sayılır. PHP haqda növbəti postumu da elə bə mövzuda yazmağa qərar verdim. Düşünürəm ki, maraqlananlar olacaq. Yenə də dərinliklərə getmədən işin əsas prinsiplərinin nədən ibarət olduğunu bildirəcəm. Mən hazır skript istifadə etməyin (copy-paste programçılığı) əleyhinə olduğumçün sizə də hazır heç nə təklif etmirəm. Oxuyun, strukturun necə qurulduğunu dərk edin və öz kodunuzu özünüz yazın. Uzunçuluq etməyib işə başlayaq.

HTTP protokolu istifadəçinin saytda olduğu müddəti tam əks etdirən sesiya yaratmaq imkanı vermir. Ancaq onun köməyi ilə biz istifadəçinin saytla son davranışını qeyd edə bilərik, hansı ki, bundan sonra istifadəçi yüklənmiş səhifəyə saatlarla baxar və ya onu tərk edə bilər.
Ona görə biz təxmini olaraq 10 dəqiqə (standart 20 dəq.) ərzində istifadəçinin heç bir yeniləmə işi etmədiyini nəzərə alıb, onun resursumuzu tərk etdiyi qərarına gələcəyik.

Read More

05 Dec

WEB-də təhlükəsizlik seriyasından – şifrələnmə

İnformasiyanın təhlükəsizliyində ən əsas mövzulardan biri şifrələnmədir. Bəzi proqramçılar bu işə nədənsə dırnaqarası baxırlar. Amma bildirim ki, İnternet kimi qlobal bir şəbəkədə heç nəyə etibar yoxdur, ona görə də bazamızdakı bütün parollar şifrələnməlidir. Bazanızın tam təhlükəsiz qorunduğuna əmin olsanız belə şifrələnmədən yan keçməyin. Əgər xaker sizin bazanızı ələ keçirsə belə, bu zaman o şifrələnmiş parolların deşifrə olunması ilə vaxt itirməli olacaq, hansı ki bu müddət ərzində parolları dəyişmək və ya xakerin tapdığı boşluqları doldurmaq olar. Və bir də onu da qeyd edim ki, PHP-də şifrələnmə elə də çətin bir iş deyil.

Burada biz özümüz alqoritm fikirləşməyəcəyik (hansı ki, bunu da eləmək olar, amma bir halda ki, siz bunu bacararsınız, deməli, bu postu sizə yazmamışam, hətta bu postu siz yazsaydınız daha maraqlı olardı=), bunun üçün hazır funksiyalar mövcuddur. Read More

24 Nov

WEB-də təhlükəsizlik seriyasından – Çətin parollar

Administratorun qızıl qaydası – «Parolun çətin olsa, basılmaz saytın A.M.=)». Düşünürəm ki, onları hər yerdə işlətmək daha məsləhətdi. Əsasən də ƏS-lərinə və ya məlumat bazasının serverinə giriş icazəsi zamanı parolun kifayət qədər çətin olması məqsədə uyğundur. Hətta xüsusi şifrə hazırlayan (password generator) utilitlərdən istifadə ideal olardı.

Əgər xaker sizin serverə skriptdəki boşluqlardan istifadə edərək daxil ola bilmədisə o çalışacaq ki, sadə üsullarla parolu müəyyən etsin.

Əgər istifadəçi adı və parol URL vasitəsilə ötürülürsə, hətta azacıq təcrübəsi olan xaker sadə program və ya skript yazaraq parolu müəyyən edə bilər. Xakerə belə programı yazmaqçün elə də çox şey lazım olmayacaq:

• Bir dəfə serverə hər hansı istifadəçi adı və ya parolla sorğu göndərmək;

• Serverin şifrə və ya istifadəçi adının səhv olması ilə əlaqəli verdiyi cavaba baxmaq. Əgər səhv yoxdursa bu o deməkdir ki, parol tapıldı, xaker öz istəyinə ele birici dəfədən nail oldu =)

• Sadə programın köməyi ilə hər dəfə ayrı istifadəçi adı və parolla URL sorğu göndərmək. Gələn cavabların hər hansı bir etalon nöqtəsinin işində fərq yaranarsa deməli parol tapılıb. Read More

13 Nov

İsitifadəçi adı və parolun düzgünlüyünün yoxlanılması

PHP ilə tanışlığımdan daha əvvəl məni avtorizasiya (bu sözü ana dilimizə tərcümə etməkdə çətinlik çəkdim=) məsələsi çox maraqlandırmışdı. Amma helə indi də istifadə etdiyim variantın ideal olub olmadığından şübhəm var. Yenə də Webdə istifadə olunan bir çox variantdan daha güvənilirdi.

İstifadəçinin rahatlığı və təhlükəsiszliyi nəzərə alaraq işimizi sessiya ilə görəcəyik.

İlk növbədə bizə 2 php faylı lazmdır: biri index.php, digəri isə autor.php (adlar şərtidir). İlk faylımızın içinə sadə HTML formu yazırıq. Hardasa aşağıdakı kimi:

<form action=”autor.php” method= “POST”>
İstifadəçi adı : <input type=”text” name=”name”><br />
Şifrə : <input type=”password” name=”password”><br />
<input type=”submit” value=”Daxil ol”>
</form>

Read More

25 Oct

MySQL cədvəlindən çağırılan məlumatların ardıcıllığının dəyişdirilməsi

Bu yaxınlarda MySQL bazası ilə işləyən zaman hər zaman işlətdiyim ORDER BY nəsə mənə kömək etməməyə başladı. Yenə o uzun SQL sorğularında nəyisə düzgün yazmadığımı bilirdim. Düşündüm ki, bunun daha rahat bir yolu mütləq olmalıdır… İnternetdə axtarışlarım da mənə praktik bir çıxış yolu tapmağıma kömək etmədi. Sabahsı gün işə gedərkən metroda birdən ağlıma phpMyAdminin köməkliyi ilə istədiyimiz ardıcıllığı alıb daha sonra isə həmin ardıcıllığa uyğun SQL çağrışlarından istifadə etmək gədi. Artıq “İçərişəhər” stansiyasının tez gəlməsini arzulayaraq, beynimdə nə etmək istədiyimi konkretləşdirməyə başladım… Beləliklə nəzərə alaq ki, bir neçə sətrdən və sütundan ibarət bir cədvəlimiz var. Bilirik ki, adi qayda ilə bazadan sətrlərimizin hamisini çağırmalı olsaq, bizə köhnədən yeniyə doğru bir siyahı təqdim olunacaqdır (sadəcə “SELECT * FROM `table_name`” sətrini istifadə etsək). Bu hər zaman işimizə yaramaya bilər, ardıcıllığı istədiyimiz sütun əsasında, həm köhnədən yeniyə, həm də əlifbaya uyğun və əksinə şəkildə seçə bilərik. Read More

29 Sep

PHP və MySQL-də unicode probleminin həlli

PHP-də ana dilimizdə sayt yaradanların tez-tez qarşılasşdığı cansıxıcı problemlərdən biri azərbaycan dilinə məxsus simvolların evezinə sual işarələrinin (????) çıxmasıdır. Bunun qarşısını almaqçün internetdə çoxlu üsullar təklif olunsa da çox təssüf ki, onların hamısı özünü doğrultmur.
Bes bu problemi həll etmək üçün nə etməli?
İlk öncə biz saytımızın əsasını təşkil edəcək mətni UTF8-də saxlamalıyıq. Əgər Notepad++ istifadə edirsinizsə (məslət görürəm ki, istifadə edəsiniz=) format menyusundan UTF-8 without BOM seçin. UTF-8 bir çox dilləri dəstəklədiyi üçün daha çox istifadə olunur (UTF8-də olan səhifələrin ölçücə daha iri olmasına baxmayaraq). Dünyanın müxtəlif ölkələrinin blog yazarlarının rahat işləyə bilməsi üçün WordPress də ondan istifadə edir.
HTML kodlarını yazarkən tagları arasına

1
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

meta tagını əlavə etməyi unutmuruq. Və ya

1
header('Content-type: text/html; charset=utf-8');

funksiyasını işlədin. Read More

19 Jun

Oracle məlumatlar bazası kompyuterə quraşdırmayaraq istifadə edilməsi.

Salam əziz blog oxuyucuları. Əgər siz Oracle istifadə etmək istəyirsinizsə, lakin onu guraşdırmaga nədənsə ya heyfiniz gelirsə, yada vaxtınız yoxdursa (yada siz bunu guraşdıra bilmirsinizsə) – bu post sizə lazım gələ bilər.
Oracle rahat öyrənmək üçün Oracle tərtibatçılalı Oracle XE – yəni Oracle Express Editionı hazırlayıblar. Oracle Xe Ubuntuya quraşdirmasini burada oxuya bilərsiniz.
Əvvəlcə, siz Oracle XE saytına daxil olub, geydiyatı keçməyi olajagsiniz. Bunun üçün sadə qeydiyyat üsulu keçməli olajagsiniz. Amma bəzi nüanslar var. Bunlar qeydiyatı keçəndə Workspace daxil olmasidir. Bu da çox böyük problem deyil. Yalnız, onu yadda saxlayın. O sizə sonra üzvlük(account) təsdig edəndə lazım gələcək. Ikincisi – new sxema yaratmalı olajagsınız (qisaca – The schema is the Oracle database user that will own your database objects). Bunun üçün 5, 10 və 50 Mb yer veriləcək. Sonra isə Oracle sizə nə üçün lazım gəldiyini bir-iki söz yazmalı olacagsınız. Elektron ünvana gəldiyi məktubu aktiv edərkən sizə password göndəriləcək. Birinci loginlə onu dəyişdirmək lazımdır.
Və tamam. İndi siz Oracle XEni oyrənməyə başlaya bilərsiniz.