Skip to content

Commit bcf736d

Browse files
committed
v2.0 — Türkçe kod tabanı, temizlenmiş yapı
- Tüm özel CSS class ve değişken isimleri Türkçeye çevrildi - Ölü CSS kaldırıldı (arayuz.css 1298 → 957 satır) - Yorum satırları temizlendi - .DS_Store ve kullanılmayan dosyalar silindi - README.md ve .gitignore eklendi - Dosya yapısı production için hazırlandı
0 parents  commit bcf736d

77 files changed

Lines changed: 14308 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
.DS_Store
2+
._*
3+
Thumbs.db
4+
Desktop.ini
5+
.vscode/
6+
.idea/
7+
*.swp
8+
*.swo
9+
*~
10+
ortam.php
11+
depolama/gecici-dosyalar/*
12+
depolama/kanit-dosyalari/*
13+
depolama/sistem-yedekleri/*
14+
!depolama/gecici-dosyalar/.gitkeep
15+
!depolama/kanit-dosyalari/.gitkeep
16+
!depolama/sistem-yedekleri/.gitkeep
17+
*.log

.htaccess

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<FilesMatch "\.(sql|env|log|bak|old|md)$">
2+
Require all denied
3+
</FilesMatch>
4+
5+
<FilesMatch "^(ortam\.php|ornek-ortam-ayarlari\.php|env\.php|env\.example\.php|\.gitignore|web\.config|composer\.json|composer\.lock)$">
6+
Require all denied
7+
</FilesMatch>
8+
9+
# Kök (/) isteği index.php ile karşılanır; aksi halde Options -Indexes → 403 olur.
10+
DirectoryIndex index.php
11+
12+
<IfModule mod_rewrite.c>
13+
RewriteEngine On
14+
RewriteRule ^(uygulama|veritabani|depolama|includes|database|storage)/ - [F,L]
15+
RewriteRule ^\.git - [F,L]
16+
17+
# Eski İngilizce yollar sessizce yeni Türkçe dosyalara çalışır.
18+
RewriteRule ^dashboard/?$ kontrol-merkezi.php [L,QSA]
19+
RewriteRule ^dashboard\.php$ kontrol-merkezi.php [L,QSA]
20+
RewriteRule ^login/?$ giris.php [L,QSA]
21+
RewriteRule ^login\.php$ giris.php [L,QSA]
22+
RewriteRule ^logout/?$ cikis.php [L,QSA]
23+
RewriteRule ^logout\.php$ cikis.php [L,QSA]
24+
RewriteRule ^notifications/?$ bildirimler.php [L,QSA]
25+
RewriteRule ^notifications\.php$ bildirimler.php [L,QSA]
26+
RewriteRule ^attachment_download/?$ kanit-indir.php [L,QSA]
27+
RewriteRule ^attachment_download\.php$ kanit-indir.php [L,QSA]
28+
RewriteRule ^backup_download/?$ yedek-indir.php [L,QSA]
29+
RewriteRule ^backup_download\.php$ yedek-indir.php [L,QSA]
30+
31+
RewriteRule ^admin/actions/?$ yonetim/eylemler.php [L,QSA]
32+
RewriteRule ^admin/action_form/?$ yonetim/eylem-formu.php [L,QSA]
33+
RewriteRule ^admin/activity_form/?$ yonetim/faaliyet-formu.php [L,QSA]
34+
RewriteRule ^admin/kpi_form/?$ yonetim/kpi-formu.php [L,QSA]
35+
RewriteRule ^admin/entries/?$ yonetim/veri-onay.php [L,QSA]
36+
RewriteRule ^admin/monitoring/?$ yonetim/veri-izleme.php [L,QSA]
37+
RewriteRule ^admin/export/?$ yonetim/disa-aktar.php [L,QSA]
38+
RewriteRule ^admin/help/?$ yonetim/yardim.php [L,QSA]
39+
RewriteRule ^admin/operations/?$ yonetim/operasyon.php [L,QSA]
40+
RewriteRule ^admin/users/?$ yonetim/kullanicilar.php [L,QSA]
41+
RewriteRule ^admin/user_form/?$ yonetim/kullanici-formu.php [L,QSA]
42+
RewriteRule ^admin/backups/?$ yonetim/yedekler.php [L,QSA]
43+
RewriteRule ^admin/audit_log/?$ yonetim/denetim-gunlugu.php [L,QSA]
44+
RewriteRule ^admin/sessions/?$ yonetim/oturumlar.php [L,QSA]
45+
RewriteRule ^admin/trash/?$ yonetim/cop-kutusu.php [L,QSA]
46+
RewriteRule ^admin/notifications/?$ yonetim/bildirimler-yonlendirme.php [L,QSA]
47+
48+
RewriteRule ^department/my_actions/?$ mudurluk/eylemlerim.php [L,QSA]
49+
RewriteRule ^department/data_form/?$ mudurluk/veri-girisi.php [L,QSA]
50+
RewriteRule ^department/my_entries/?$ mudurluk/veri-gecmisim.php [L,QSA]
51+
RewriteRule ^department/add_activity/?$ mudurluk/faaliyet-ekle.php [L,QSA]
52+
RewriteRule ^department/help/?$ mudurluk/yardim.php [L,QSA]
53+
54+
RewriteCond %{REQUEST_FILENAME} !-d
55+
RewriteCond %{REQUEST_FILENAME}\.php -f
56+
RewriteRule ^(.+)$ $1.php [L]
57+
</IfModule>
58+
59+
Options -Indexes
60+
61+
ErrorDocument 404 /404.php
62+
ErrorDocument 403 /403.php
63+
64+
65+
66+
<IfModule mod_headers.c>
67+
Header always unset X-Powered-By
68+
Header always set X-Content-Type-Options "nosniff"
69+
Header always set X-Frame-Options "DENY"
70+
Header always set X-XSS-Protection "1; mode=block"
71+
Header always set Referrer-Policy "strict-origin-when-cross-origin"
72+
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
73+
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; font-src 'self' data:; img-src 'self' data:; connect-src 'self'; frame-ancestors 'none'; base-uri 'self'; form-action 'self'"
74+
</IfModule>

403.php

Lines changed: 264 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,264 @@
1+
<?php header_remove('X-Powered-By'); ?>
2+
<!DOCTYPE html>
3+
<html lang="tr">
4+
<head>
5+
<meta charset="UTF-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
7+
<title>Erişim Reddedildi — SECAP Portalı</title>
8+
<link href="<?= defined('BASE_PATH') ? BASE_PATH : '' ?>/varliklar/fontlar/fonts.css" rel="stylesheet">
9+
<link href="<?= defined('BASE_PATH') ? BASE_PATH : '' ?>/varliklar/kutuphaneler/bootstrap-icons/bootstrap-icons.min.css" rel="stylesheet">
10+
<style>
11+
* { margin: 0; padding: 0; box-sizing: border-box; }
12+
13+
body {
14+
font-family: 'Manrope', system-ui, sans-serif;
15+
min-height: 100vh;
16+
display: flex;
17+
flex-direction: column;
18+
align-items: center;
19+
justify-content: center;
20+
background: #F4F5F7;
21+
color: #1F2329;
22+
-webkit-font-smoothing: antialiased;
23+
overflow: hidden;
24+
position: relative;
25+
}
26+
27+
body::before {
28+
content: '';
29+
position: absolute;
30+
top: -120px;
31+
right: -120px;
32+
width: 400px;
33+
height: 400px;
34+
border-radius: 50%;
35+
background: radial-gradient(circle, rgba(220,38,38,.08) 0%, transparent 70%);
36+
pointer-events: none;
37+
}
38+
39+
body::after {
40+
content: '';
41+
position: absolute;
42+
bottom: -80px;
43+
left: -80px;
44+
width: 300px;
45+
height: 300px;
46+
border-radius: 50%;
47+
background: radial-gradient(circle, rgba(220,38,38,.05) 0%, transparent 70%);
48+
pointer-events: none;
49+
}
50+
51+
.error-wrapper {
52+
position: relative;
53+
z-index: 1;
54+
text-align: center;
55+
padding: 2rem;
56+
max-width: 560px;
57+
}
58+
59+
.marka {
60+
display: flex;
61+
align-items: center;
62+
justify-content: center;
63+
gap: .75rem;
64+
margin-bottom: 3rem;
65+
animation: fadeIn .8s ease forwards;
66+
}
67+
68+
.marka img {
69+
height: 36px;
70+
}
71+
72+
.brand-text {
73+
text-align: left;
74+
border-left: 2px solid #E6E8EB;
75+
padding-left: .75rem;
76+
}
77+
78+
.marka-baslik {
79+
font-family: 'Outfit', sans-serif;
80+
font-weight: 700;
81+
font-size: .85rem;
82+
color: #090A0C;
83+
letter-spacing: -0.02em;
84+
}
85+
86+
.marka-alt {
87+
font-size: .6rem;
88+
font-weight: 700;
89+
text-transform: uppercase;
90+
letter-spacing: .12em;
91+
color: #8B94A3;
92+
}
93+
94+
.error-visual {
95+
position: relative;
96+
margin-bottom: 2rem;
97+
animation: fadeUp .7s cubic-bezier(.2,.8,.2,1) forwards;
98+
}
99+
100+
.error-code {
101+
font-family: 'Outfit', sans-serif;
102+
font-size: 10rem;
103+
font-weight: 900;
104+
letter-spacing: -0.08em;
105+
line-height: 1;
106+
color: #090A0C;
107+
position: relative;
108+
display: inline-block;
109+
}
110+
111+
.error-code span {
112+
background: linear-gradient(135deg, #EF4444 0%, #DC2626 100%);
113+
-webkit-background-clip: text;
114+
-webkit-text-fill-color: transparent;
115+
background-clip: text;
116+
}
117+
118+
.error-code::after {
119+
content: '';
120+
position: absolute;
121+
bottom: 8px;
122+
left: 50%;
123+
transform: translateX(-50%);
124+
width: 80px;
125+
height: 5px;
126+
border-radius: 99px;
127+
background: linear-gradient(90deg, #EF4444, #DC2626);
128+
}
129+
130+
.error-icon-float {
131+
position: absolute;
132+
top: 15px;
133+
right: -10px;
134+
width: 48px;
135+
height: 48px;
136+
border-radius: 14px;
137+
background: linear-gradient(135deg, #EF4444, #DC2626);
138+
display: flex;
139+
align-items: center;
140+
justify-content: center;
141+
color: #fff;
142+
font-size: 1.25rem;
143+
box-shadow: 0 8px 24px rgba(220,38,38,.3);
144+
animation: pulse 2s ease-in-out infinite;
145+
}
146+
147+
.error-content {
148+
animation: fadeUp .7s cubic-bezier(.2,.8,.2,1) .15s both;
149+
}
150+
151+
.error-title {
152+
font-family: 'Outfit', sans-serif;
153+
font-size: 1.6rem;
154+
font-weight: 800;
155+
color: #090A0C;
156+
margin-bottom: .6rem;
157+
letter-spacing: -0.03em;
158+
}
159+
160+
.error-desc {
161+
color: #5C6573;
162+
font-size: .95rem;
163+
font-weight: 500;
164+
line-height: 1.7;
165+
margin-bottom: 2.5rem;
166+
}
167+
168+
.error-actions {
169+
display: flex;
170+
gap: .75rem;
171+
justify-content: center;
172+
flex-wrap: wrap;
173+
animation: fadeUp .7s cubic-bezier(.2,.8,.2,1) .3s both;
174+
}
175+
176+
.btn-err {
177+
display: inline-flex;
178+
align-items: center;
179+
gap: .5rem;
180+
padding: .9rem 2rem;
181+
border-radius: 12px;
182+
font-family: 'Outfit', sans-serif;
183+
font-weight: 700;
184+
font-size: .9rem;
185+
text-decoration: none;
186+
transition: all .25s cubic-bezier(.2,.8,.2,1);
187+
cursor: pointer;
188+
}
189+
190+
.btn-err i { transition: transform .25s ease; }
191+
192+
.btn-ghost-err {
193+
background: #fff;
194+
color: #5C6573;
195+
border: 2px solid #E6E8EB;
196+
}
197+
.btn-ghost-err:hover {
198+
background: #090A0C;
199+
border-color: #090A0C;
200+
color: #fff;
201+
transform: translateY(-3px);
202+
box-shadow: 0 8px 16px rgba(9,10,12,.1);
203+
}
204+
.btn-ghost-err:hover i { transform: translateX(-3px); }
205+
206+
.footer-text {
207+
position: fixed;
208+
bottom: 1.5rem;
209+
left: 50%;
210+
transform: translateX(-50%);
211+
font-size: .72rem;
212+
color: #8B94A3;
213+
font-weight: 600;
214+
z-index: 1;
215+
}
216+
217+
@keyframes fadeUp {
218+
from { opacity: 0; transform: translateY(24px); }
219+
to { opacity: 1; transform: translateY(0); }
220+
}
221+
@keyframes fadeIn {
222+
from { opacity: 0; }
223+
to { opacity: 1; }
224+
}
225+
@keyframes pulse {
226+
0%, 100% { transform: scale(1); box-shadow: 0 8px 24px rgba(220,38,38,.3); }
227+
50% { transform: scale(1.08); box-shadow: 0 12px 32px rgba(220,38,38,.4); }
228+
}
229+
</style>
230+
</head>
231+
<body>
232+
233+
<div class="error-wrapper">
234+
<div class="marka">
235+
<img src="<?= defined('BASE_PATH') ? BASE_PATH : '' ?>/varliklar/belediye-logo.svg" alt="Silivri Belediyesi">
236+
<div class="brand-text">
237+
<div class="marka-baslik">T.C. Silivri Belediyesi</div>
238+
<div class="marka-alt">SECAP Portalı</div>
239+
</div>
240+
</div>
241+
242+
<div class="error-visual">
243+
<div class="error-code">4<span>0</span>3</div>
244+
<div class="error-icon-float">
245+
<i class="bi bi-shield-lock"></i>
246+
</div>
247+
</div>
248+
249+
<div class="error-content">
250+
<h1 class="error-title">Erişim Reddedildi</h1>
251+
<p class="error-desc">Bu sayfaya erişim yetkiniz bulunmamaktadır.<br>Yetki gerektiren bir alana ulaşmaya çalışıyorsanız sistem yöneticinize başvurun.</p>
252+
</div>
253+
254+
<div class="error-actions">
255+
<a href="javascript:history.back()" class="btn-err btn-ghost-err">
256+
<i class="bi bi-arrow-left"></i> Geri Dön
257+
</a>
258+
</div>
259+
</div>
260+
261+
<div class="footer-text">&copy; <?= date('Y') ?> T.C. Silivri Belediyesi Bilgi İşlem Müdürlüğü</div>
262+
263+
</body>
264+
</html>

0 commit comments

Comments
 (0)