Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak zapisać definicje cyfr lub liter

Ostatnio zmodyfikowano 2014-06-13 21:43
Autor Wiadomość
SP1LOP
Temat założony przez niniejszego użytkownika
Jak zapisać definicje cyfr lub liter
» 2014-06-03 11:46:00
Witam
Korzystam z pewnego programu  *.cpp  z którym mam problem z SPAM'em z automatów
mianowicie mam taką wersję części pliku:  http.cpp

Próbuje zdefiniować czy 2 znak w w zmiennej lt to cyfra czy litera
  if (lt[1] == 'A') subj = "";
jeśli występuje litera na drugiej pozycji to 'subj' ma być pusty ""
lub inaczej jeśli na 2 - 4 pozycji nie znajdują się cyfry to 'subj'
jest puste: ""

C/C++
//[ciach]
{
    if( !to ) to = "";
   
    if( !lt ) lt = "";
   
    if( !subj ) subj = "";
    /* tu ta zmiana
      if (lt[1] == 'A') subj = "";
    */
   
    html_putf( "<h2><i>%s</i></h2>\n", ms( m_http_sendmail ) );
    html_putf( "<pre><form method=post action=\"/sendok\">\n" );
   
    if( !strcmp( to, m.sysopcall ) )
    {
        if( !m.httpshowsysopcall )
        html_putf( "%20s: <input type=\"text\" name=\"to\" "
             "value=\"\" size=30><BR>", ms( m_http_to ) );
        else
        html_putf( "%20s: %s <input type=\"hidden\" <name=\"to\" "
             "value=\"%s\" size=8><BR>", ms( m_http_to ), to, to );
       
    }
    else
   
    html_putf( "%20s: <input type=\"text\" name=\"to\" "
         "value=\"%s\" size=30><BR>", ms( m_http_to ), to );
   
    html_putf( "%20s: <input type=\"text\" name=\"life\" "
    "value=\"%s\" size=3 maxlenght=3><BR>", ms( m_http_lifetime ), lt );
   
    html_putf( "%20s: <input type=\"text\" name=\"subj\" "
    "value=\"%s\" maxlenght=36 size=37>\n", ms( m_http_subject ), subj );
    //[ciach]
P-111350
pekfos
» 2014-06-03 12:31:15
isalpha(), isdigit(), isalnum().
P-111352
SP1LOP
Temat założony przez niniejszego użytkownika
» 2014-06-03 14:56:04
Nie wiem jak to zrobić proszę o podpowiedź:
isalpha(), isdigit(), isalnum().
proszę o podpowiedz jak to mam zapisać ja próbowałem tak:
if (lt[1] == 'A') subj = "";
Jeśli można jakiś przykład bardzo proszę ciężko mi się myśli (76l) nie mogę sobie
przypomnieć ... >>>
P-111353
michal11
» 2014-06-03 17:23:34
C/C++
if( isdigit( lt[ 1 ] ) )
{
    //kod
}

Nie wiem tylko czy akurat o funkcję isdigit chodzi w tym konkretnym przypadku. Ale tak się korzysta z każdej z wymienionych przez pekfosa funkcji.
P-111361
SP1LOP
Temat założony przez niniejszego użytkownika
» 2014-06-04 01:00:38
C/C++
if( isdigit( lt[ 1 ] ) )
{
    //kod
}
Chodzi o to aby system sprawdzał dla pola INPUT o nazwie lt (lifetime <- czas żywotności maila, max wartość to 999 wiadomość nie będzie automatycznie kasowalna)
C/C++
if( !lt ) lt = "";

tu trzeba sprawdzać czy są cyfry czy litery
Jeśli są litery (to wystarczy wyzerować tytuł:
C/C++
if( !lt ) lt = "";

 'subj' <- Subject  jeśli jest puste czyli "" to wiadomość nie zostanie zapisana, a jeśli się w 'lt' pojawią litery to tytuł wiadomości powinien być pusty: ""
C/C++
if( !subj ) subj = "";

i tu wpisałem warunek:
C/C++
if( lt[ 1 ] == 'A' ) subj = "";

'A' tu trzeba by zdefiniować czy na pozycji 1-2-3-ciej w lifetime 'lt' jest litera lub ciąg liter, jeśli tak to trzeba wyzerować tytuł: 'subj' a potem wykonać dalsze linie, kodu cpp jaki podałem...
Mam problemy z wyjaśnieniem o co mi chodzi... Chodzi o system wysyłania maila do SysOp'a... Automaty 'SPAM'erskie nie widzą tej części INPUT lt i wysyłają tekst dlatego otrzymuję SPAM'y. A gdyby to kontrolować jak wystąpią w 'lt' Litery to wyzerować tytuł..  Mail bez tytułu nie zostanie wysłany do SysOp'a...
Można to zobaczyć jak wygląda na linku:
http:/​/www.sr1bsz.ampr.org:8088/send
P-111396
SP1LOP
Temat założony przez niniejszego użytkownika
» 2014-06-10 17:39:54
No niestety nie wiem jak to zrobić więc zrobiłem to inaczej, zmieniłem zamiast jako pierwsze dać 'reset' potem 'submit' a nie jak było pierwsze było 'submit' potem 'reset' i chyba to się udało, na razie nie mam spamu z automatów...
C/C++
//[ciach]   
html_putf( "<br> &nbsp; &nbsp; <input type=\"reset\" value=\"%s\">", ms( m_http_clearform ) );
html_putf( "&nbsp; &nbsp; <input type=\"submit\" value=\"%s\">", ms( m_http_sendmail ) );
html_putf( "\n</form></pre>\n" );
//[ciach]
  Dalej nie wiem jak zapisać w C++ aby można wpisywać, tylko cyfry dla 'LT'
C/C++
html_putf( "%20s: <input type=\"text\" name=\"life\" "
"value=\"%s\" maxlength=\"3\" size=\"2\"><br>", ms( m_http_lifetime ), lt );
 Chodzi o te 3 znaki.... dopuszczalne tylko są cyfry a nie litery...
Temat uważam za zamknięty... Pozdrawiam wszystkich...
Jakby ktoś rozwiązał ten problem bardzo proszę o info maile też do mnie nie tylko tu..
P-111887
maly
» 2014-06-10 19:27:51
C/C++
#include<iostream>
#include <cstdlib>

int main()
{
    char * lt = "12384a";
   
    char * resend;
    long l = std::strtol( lt, & resend, 10 );
    if( * resend != 0 )
    {
        //subj = "";
        std::cout << "nie liczba" << std::endl;
    }
    else
    {
        std::cout << "liczba " << l << std::endl;
    }
    return 0;
}
P-111894
SP1LOP
Temat założony przez niniejszego użytkownika
» 2014-06-13 21:43:16
Użytkownik 'maly' podał przykład jak wyżej, ale to za mądre jak na obecna moja chwilę.... Nie bardzo widzę ten przykład jako wstawkę do części całości http.cpp.
Może prościej użycie byłoby "captcha"  mam prostą wersje w php a ale wpisuje się to jest ok, po wywołaniu pokazuje obrazek z kodem który trzeba wpisać,.. a potem trzeba wywołać inną cześć co sprawdza poprawność, to tego nie wiem jak zrobić sprawdzanie czy poprawny kod a jak nie to reset danych w pliku...

No chyba tak pozostawię nie dam rady... A może usunę możliwość wysyłania maili, do sysopa...

Pozdrawiam
 
P-112038
« 1 »
  Strona 1 z 1