Diskuze: Login Bot
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj,
bohužel ti na tvůj dotaz neodpovím, ale pokud bys to chtěl za nějakým
konkrétním účelem, například odesílat maily, nebo zveřejňovat
příspěvky na Facebooku, tak můžeš využít jejich API, které je k tomu
určené.
https://developers.google.com/gmail/api/
https://developers.facebook.com/
S tým prihlásením to je dosť dôležité keďže potrebujem aby sa PHP kód pripojil na hocijakú stránku (čiže s tými API mi to bohužiaľ nepomôže).
Našiel som jeden zajímavý kód, ktorý z časti funguje (https://davidwalsh.name/gmail-php-imap)
/* connect to gmail */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = '[email protected]';
$password = 'davidwalsh';
/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
/* grab emails */
$emails = imap_search($inbox,'ALL');
/* if emails are returned, cycle through each... */
if($emails) {
/* begin output var */
$output = '';
/* put the newest emails on top */
rsort($emails);
/* for every email... */
foreach($emails as $email_number) {
/* get information specific to this email */
$overview = imap_fetch_overview($inbox,$email_number,0);
$message = imap_fetchbody($inbox,$email_number,2);
/* output the email header information */
$output.= '<div class="toggler '.($overview[0]->seen ? 'read' : 'unread').'">';
$output.= '<span class="subject">'.$overview[0]->subject.'</span> ';
$output.= '<span class="from">'.$overview[0]->from.'</span>';
$output.= '<span class="date">on '.$overview[0]->date.'</span>';
$output.= '</div>';
/* output the email body */
$output.= '<div class="body">'.$message.'</div>';
}
echo $output;
}
/* close the connection */
imap_close($inbox);
Aj tak treba zrušiť na gmaily nejakú ochranu ale stále lepšie ako nič. Čo je horšie výpis je dosť zlý. Potreboval by som napr. vypísať čisto len ľavú stranu (Doručená počta, Odoslaná pošta...) + asi tak nieje nastavený niečo iné ako UTF-8 keďže má problém s výpisom v SK. Nejaké nápady?
Konkrétne pri tom ľavom stĺpci je DIV <div class="r9gPwb bQ" style="width: auto;"> ale tu už trocha neovládam syntax... konkrétne toto nefunguje
$output.= '<div class="r9gPwb bQ>';
$output.= '</div>';
Ahoj, já na to zkusím jít z trochu jiné strany. Zrovna se psaním všelijakých "botů" mám docela zkušenosti a proto hned na začátek musím říct, že je to poměrně složitá a rozsáhlá disciplína se spoustou zákoutí. Postup, který se mně osobně osvědčil, je stanovit si pevný cíl a jít k němu hezky krok po kroku. Takže moje otázka zní, jakého bota chceš ve výsledku napsat a co všechno by měl umět?
Bota, ktorý sa pri zavolaní prihlási na stránku xy, ktorú následne oskenuje a oskenovanú stránku mi vypíše.
Tak to Tě zklamu hned v prvním bodě. Princip přihlášení, i když má podobné prvky, se liší stánku od stánky. Samozřejmě se najdou stránky, na které funguje to samé, ale nějak to zobecnit na libovolný web, to půjde jen opravdu těžko...
A za druhé, úplně nevím, co jsi mám představit pod pojmem "oskenuje stránku". Mohl by jsi být trochu specifičtější?
To som už zistil práve preto som z toho pôvodného kódu čo mám hore prešiel zatiaľ čisto na Gmail. Pojmom oscanovať stŕanku mám namysli uložiť si časť stránky do nejakého stringu (neviem či je slovo oskenovať to správne). Úplna predstava je, že sa PHP kód zavolá, prihlási sa do Gmailu, vytiahne z neho napr. všetky kontakty, ktoré sú práve online a tie mi vypíše na mojej stránke.
Konečne som našiel čo som potreboval...
Výsledný kód
<?php
set_time_limit(4000);
// Connect to gmail
$imapPath = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = '[email protected]';
$password = 'password';
// try to connect
$inbox = imap_open($imapPath,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
/* ALL - return all messages matching the rest of the criteria
ANSWERED - match messages with the \\ANSWERED flag set
BCC "string" - match messages with "string" in the Bcc: field
BEFORE "date" - match messages with Date: before "date"
BODY "string" - match messages with "string" in the body of the message
CC "string" - match messages with "string" in the Cc: field
DELETED - match deleted messages
FLAGGED - match messages with the \\FLAGGED (sometimes referred to as Important or Urgent) flag set
FROM "string" - match messages with "string" in the From: field
KEYWORD "string" - match messages with "string" as a keyword
NEW - match new messages
OLD - match old messages
ON "date" - match messages with Date: matching "date"
RECENT - match messages with the \\RECENT flag set
SEEN - match messages that have been read (the \\SEEN flag is set)
SINCE "date" - match messages with Date: after "date"
SUBJECT "string" - match messages with "string" in the Subject:
TEXT "string" - match messages with text "string"
TO "string" - match messages with "string" in the To:
UNANSWERED - match messages that have not been answered
UNDELETED - match messages that are not deleted
UNFLAGGED - match messages that are not flagged
UNKEYWORD "string" - match messages that do not have the keyword "string"
UNSEEN - match messages which have not been read yet*/
// search and get unseen emails, function will return email ids
$emails = imap_search($inbox,'ALL');
print_r($emails);
if($emails) {
$output = '';
rsort($emails);
foreach($emails as $mail)
{
$headerInfo = imap_headerinfo($inbox,$mail);
$output .= $headerInfo->subject.'<br/>';
$output .= $headerInfo->toaddress.'<br/>';
$output .= $headerInfo->date.'<br/>';
$output .= $headerInfo->fromaddress.'<br/>';
$emailStructure = imap_fetchstructure($inbox,$mail);
if(!isset($emailStructure->parts)) {
$output .= imap_body($inbox, $mail, FT_PEEK);
} else {
//
}
echo iconv_mime_decode($output); // prekladá do UTF-8
print_r("<br>");
$output = '';
}
}
// colse the connection
imap_expunge($inbox);
imap_close($inbox);
?>
Taktiež odporúčam http://php.net/…ook.imap.php
Ďakujem všetkým za pomoc.
Zobrazeno 11 zpráv z 11.