C'de Login Programı(Yardım)
-
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
void main()
{
char userid[8],password[8],id[8],pss[8],p[15],u[15];
int n=1,a,b,i=0,temp=0;
FILE *fp;{
printf("Please Register to system\n");
printf("Please enter your user id:");
scanf("%s",&userid);
printf("please enter your password:");
scanf("%s",&password);
fp = fopen("database.txt","a+");
fprintf(fp,"User id: %s, password: %s\n",userid,password);
fclose(fp);
}
printf("\nEnter USER ID and PASSWORD below (You have only three chances to enter)");
getch();
while(n<=3)
{
printf("\nUSER ID: ");
scanf("%s",u);
printf("\nPASSWORD: ");
scanf("%s",p);
a=strcmp(u,userid);
b=strcmp(p,password);
if(a==0&&b==0)
{
printf("\nYou have logged in successfully.");
getch();
}
else
{
printf("\nWrong PASSWORD and/or USER ID. Now you have %d more chance/s.",3-n);
getch();
n++;
}
if(n==4)
printf("you can not login");
};
getch();
return 0;
}
Arkadaşlar, şöyle bir kod yazdım.Şimdi yazdığım programda ilk başta kullanıcıdan bilgiler alınarak masaüstünde "database.txt" adlı bir klasör oluşturuyor
bu klasörün içinde önceden kullanıcıdan alınan "user ve password" bilgileri var.
Programım bilgiler alınıp ve masaüstüne kaydedildikten sonra daha sona ermiyor,
bilgiler alındıktan sonra kullanıcıdan user id'si ve parolası isteniyor, eğer doğruysa başarıyla girdiniz yazıyor,
doğru değilse 3 kere daha denemenizi söylüyor ve eğer yanlış girerseniz, sisteme giriş yapamazsınız diyor
Not: password kısmını daha yapmadım, çünkü girdiğiniz parola normal karakter olarak gözüküyor ama ****** diye gözükmesi lazım, o sorun değil.
Şimdi
Kısaca programı geliştirmek istiyorum, şöyleki;
sistem sizden bilgileri alıp kaydettikten sonra direk giriş yapmayacak.Önceden kaydedilen tüm kullanıcıları kontrol edip daha sonra başarıyla giriş yaptınız veya yapmadınız diyecek.
Sizden isteğim sadece bu kontrol işlemini hangi kod sistemiyle yapılıyor bunu bilmiyorum ve sizden vidolu olur veya sadece makale olur, yardım istiyorum link olarak.
-
pardon :)
-
Sakin ol hacı. Sen de iyi biliyorsun ki insanların işi gücü var. İlgili arkadaşlar konuyu gördüklerinde yazarlar zaten.
Sorunun cevabına gelirsek;
Database olmadan, dosya üzerinde bu işleri yapmak biraz daha uğraştırıcı sanki. Ama madem elimizde bunlar var sadece, eldekileri kullanarak bi şeyler yapmaya çalışalım.
username password
username password
.... ....
... ...
şeklinde kayıtlar tutabilirsin dosyada. Daha sonra her bir satır bir kayıt ve boşluk karakterinin öncesi username, sonrası da password olacak şekilde bir yapı kurup, her kayıt için bir nesne yaratabilrisin. (Nesne dediğim C için struct kullanabilirsin). Bütün bu kayıtları bir diziye atıp, kontrol yapmak istediğinde dizi elemanlarında arama yapabilirsin. Girilen değer ikililerini, elinde tuttuğun dizideki her bir eleman ile karşılaştırırsın falan. Yani ben olsam böyle bir şeyler yapmaya çalışırdım.
-
15 dakika içinde yanıt verilmediği için sinirlenen arkadaşım ne istediğin bulanık önce bunu bir netleştir. Soruyu net sor ki yanıtı da net al
sistem sizden bilgileri alıp kaydettikten sonra direk giriş yapmayacak.Önceden kaydedilen tüm kullanıcıları kontrol edip daha sonra başarıyla giriş yaptınız veya yapmadınız diyecek.
bilgileri alıp kaydetmek dediğin şey register kısmı ve istediğin şey de yeni eklenen kullanıcının bilgilerinin daha önce var olup olmadığı mı
veya
giriş kısmında giriş yapan kullanıcının dosya içerisinde var olup olmadığı mı
veya
başka bir şey mi??
Önce bunu netleştir.
-
Hocam fazla vaktim olmadığı için kodu direk yazamıyorum kusura bakma. Umarım istediğin şeyi doğru anlamışımdır, anladığım şekilde bir algoritma yazıcam. Bu gece ya da yarın öğlene doğru kodu da direk olarak yazabilirim hala gerekiyor olursa.
1- Kullanıcı Adı iste, değişkene ata
2- Şifre iste, değişkene ata
3- FILE pointer, 'w' komutu kullanarak database.txt adlı text dosyasını oluşturup içine bu bilgileri yazdır. (fprintf)
4- Kullanıcı Adı iste, değişkene ata
5- Şifre iste, değişkene ata
6- FILE pointer, 'r' komutu ile username e ait kısmı string olarak bir değişkene ata
7- FILE pointer, 'r' komutu ile password e ait kısmı string olarak bir değişkene ata
8- Kullanıcıdan aldığın username,password ile database.txt den çektiğin username,password u karşılaştır.
9- Doğru ise printf("giriş yapıldı."); , yanlış ise printf("Yanlış k.adı veya şifre"); return 0;
10- BİTİR
-
JPriest bunu yazdı:
-----------------------------Sakin ol hacı. Sen de iyi biliyorsun ki insanların işi gücü var. İlgili arkadaşlar konuyu gördüklerinde yazarlar zaten.
Sorunun cevabına gelirsek;
Database olmadan, dosya üzerinde bu işleri yapmak biraz daha uğraştırıcı sanki. Ama madem elimizde bunlar var sadece, eldekileri kullanarak bi şeyler yapmaya çalışalım.
username password
username password
.... ....
... ...
şeklinde kayıtlar tutabilirsin dosyada. Daha sonra her bir satır bir kayıt ve boşluk karakterinin öncesi username, sonrası da password olacak şekilde bir yapı kurup, her kayıt için bir nesne yaratabilrisin. (Nesne dediğim C için struct kullanabilirsin). Bütün bu kayıtları bir diziye atıp, kontrol yapmak istediğinde dizi elemanlarında arama yapabilirsin. Girilen değer ikililerini, elinde tuttuğun dizideki her bir eleman ile karşılaştırırsın falan. Yani ben olsam böyle bir şeyler yapmaya çalışırdım.
-----------------------------Evet istediğim tam böyle birşeydi, programı baştan editleyip önce algoritmasını tutmam gerekiyor.Struct kısmını iyiki hatırlattın gayet mantıklı, Teşekkürler.
-
Sscheme bunu yazdı:
-----------------------------15 dakika içinde yanıt verilmediği için sinirlenen arkadaşım ne istediğin bulanık önce bunu bir netleştir. Soruyu net sor ki yanıtı da net al
sistem sizden bilgileri alıp kaydettikten sonra direk giriş yapmayacak.Önceden kaydedilen tüm kullanıcıları kontrol edip daha sonra başarıyla giriş yaptınız veya yapmadınız diyecek.
bilgileri alıp kaydetmek dediğin şey register kısmı ve istediğin şey de yeni eklenen kullanıcının bilgilerinin daha önce var olup olmadığı mı
veya
giriş kısmında giriş yapan kullanıcının dosya içerisinde var olup olmadığı mı
veya
başka bir şey mi??
Önce bunu netleştir.
-----------------------------Evet tam olarak iriş yapan kullanıcının dosya içerisinde var olup olmadığını check edip sonra yanıt vermesi
-
Hocam fazla vaktim olmadığı için kodu direk yazamıyorum kusura bakma. Umarım istediğin şeyi doğru anlamışımdır, anladığım şekilde bir algoritma yazıcam. Bu gece ya da yarın öğlene doğru kodu da direk olarak yazabilirim hala gerekiyor olursa.
1- Kullanıcı Adı iste, değişkene ata
2- Şifre iste, değişkene ata
3- FILE pointer, 'w' komutu kullanarak database.txt adlı text dosyasını oluşturup içine bu bilgileri yazdır. (fprintf)
4- Kullanıcı Adı iste, değişkene ata
5- Şifre iste, değişkene ata
6- FILE pointer, 'r' komutu ile username e ait kısmı string olarak bir değişkene ata
7- FILE pointer, 'r' komutu ile password e ait kısmı string olarak bir değişkene ata
8- Kullanıcıdan aldığın username,password ile database.txt den çektiğin username,password u karşılaştır.
9- Doğru ise printf("giriş yapıldı."); , yanlış ise printf("Yanlış k.adı veya şifre"); return 0;
10- BİTİR
Teşekkürler hocam, Konunun irdelenmesi ve anlaşılması için gayet hoş olur.
-
Dosyayı struct yapısıyla tutmak en mantıklısı o şekilde yaparsan dosyanın sonuna kadar okur elindeki username password ile karşılaştırırsın kod da
login = 0; // giriş yapılmış mı yapılmamış mı başta yapılmadığı için 0 olacak
while login 1 olmadıkça veya dosya sonuna gelinmedikçe
{
dosyadan struct ı oku
okunanla girilenin kullanıcı adı ve şifresi aynı mı kontrol et
eğer aynıysa login i 1 yap
değilse tekrar oku
}
döngüden çıktığında login 1 se adam girmiştir değilse kapının önüne koy
gibi olabilir.
