Hoşgeldin Misafir

Destek Talebi Php Lisans sayfasını Geçemedim bir türlü

aliceri20172017

8 Tem 2020
81 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Mrb.. Bu siteden QuickHomes - Laravel Real Estate Agency Portal Multilingual adlı bir PHP betiği indirdim. Ancak, ne yaptıysam install edemiyorum.. Sebebi şu şekilde: Betiğin içindeki install klasöründe iki dosya var:
index.php ve installer.php. Her iki dosya da curl kullanarak bir adrese yönlendiriyor. Ne yaptımsa bunu çözemiyorum. İki dosyayı da paylaştım. Yardımınız için teşekkür ederim. Dosyaları buraya metin olarak yükledim. Bilen arkadaşlardan rica ediyorum.
Saygılarımla...
 
Moderatör tarafında düzenlendi:

YARBAY

28 Haz 2025
1,341 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Konuya dair linki de eklermisin buraya bakalım. dikkatimi çeken bir diğer şey ise senin eklediğin dosyaların .php.txt ile bitiyor. source kodlarda bu dosyalar .txt uzantılı mı kontrol edermisin ?
 

Desperados

3 Kas 2023
548 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
index.php

Kod:
<?php

if(file_exists("../includes/config.php")){
    require_once('../includes/config.php');
}

require_once('installer.php');
error_reporting(E_ALL);
ini_set('display_errors', 1);

// SSL ve URL Protokol Belirleme
$protocol = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] !== "off") ? "https://" : "http://";
$site_url = $protocol . $_SERVER['HTTP_HOST'] . str_replace(["index.php", "install/"], "", $_SERVER['PHP_SELF']);

$error = '';
$installing_version = isset($config['version']) ? $config['version'] : '1.0';

if(isset($_GET['lang'])) {
    $_POST['lang'] = $_GET['lang'];
}

if(isset($_POST['lang'])) {
    require_once('lang/lang_'.$_POST['lang'].'.php');
}

// Kurulu mu Kontrolü (Yönlendirme hatası giderildi)
if(isset($config['installed']) && $config['installed'] == '1') {
    if($config['version'] == $installing_version){
        header('Location: ../index.php');
        exit('QuickHomes is zaten kurulu.');
    }
}

if(is_writable('../includes/config.php')) {
    if(!isset($_POST['lang'])) {
        $step = 1;
    } else {
        if (!isset($_POST['PCode'])) {
            $step = 2;
        } else {
            // --- LİSANS DOĞRULAMA BYPASS ---
            // Herhangi bir PCode girildiğinde başarılı sayar.
            $step = 3;

            if (isset($_POST['DBHost'])) {
                $con = @new mysqli($_POST['DBHost'], $_POST['DBUser'], $_POST['DBPass'], $_POST['DBName']);

                if ($con->connect_error) {
                    $error = "Veritabanı bağlantı hatası: " . $con->connect_error;
                    $step = 3;
                } else {
                    if (isset($_POST['adminuser'])) {
                        if (trim($_POST['adminuser']) == '') {
                            $step = 4;
                        } else {
                            // Veritabanı tablolarını içeri aktar
                            importSchemaSql($con, $_POST['DBPre']);
                            importDataSql($con, $_POST['DBPre']);
                            importGeonamesSql($con, $_POST['DBPre'], $_POST['default_country']);

                            $pass_hash = password_hash($_POST["adminpass"], PASSWORD_DEFAULT, ['cost' => 13]);

                            // Admin bilgilerini temizle ve ekle
                            $con->query("TRUNCATE TABLE `" . addslashes($_POST['DBPre']) . "admins`");
                            $con->query("INSERT INTO `" . addslashes($_POST['DBPre']) . "admins` (`id`, `username`, `password_hash`, `name`, `email`, `image`, `permission`) VALUES
                            (1, '" . addslashes($_POST['adminuser']) . "', '" . $pass_hash . "', 'Admin', '" . addslashes($_POST['admin_email']) . "', 'default_user.png', '1');");

                            $con->query("UPDATE `" . addslashes($_POST['DBPre']) . "countries` SET active='1' WHERE `code` = '" . $_POST['default_country'] . "'");
                            $con->query("INSERT INTO " . addslashes($_POST['DBPre']) . "options (`option_name`, `option_value`) VALUES ('specific_country', '" . $_POST['default_country'] . "')");
                            $con->query("INSERT INTO " . addslashes($_POST['DBPre']) . "options (`option_name`, `option_value`) VALUES ('site_url', '" . $site_url . "')");

                            $con->close();

                            // Config dosyasını oluştur
                            $content = "<?php\n";
                            $content .= "\$config['db']['host'] = '" . addslashes($_POST['DBHost']) . "';\n";
                            $content .= "\$config['db']['name'] = '" . addslashes($_POST['DBName']) . "';\n";
                            $content .= "\$config['db']['user'] = '" . addslashes($_POST['DBUser']) . "';\n";
                            $content .= "\$config['db']['pass'] = '" . addslashes($_POST['DBPass']) . "';\n";
                            $content .= "\$config['db']['pre'] = '" . addslashes($_POST['DBPre']) . "';\n\n";
                            $content .= "\$config['admin_folder'] = 'admin';\n";
                            $content .= "\$config['version'] = '" . $installing_version . "';\n";
                            $content .= "\$config['installed'] = '1';\n";
                            $content .= "?>";

                            file_put_contents('../includes/config.php', $content);
                            $step = 5;
                        }
                    } else {
                        $step = 4;
                    }
                }
            }
        }
    }
} else {
    $step = 0;
    $error = 'config.php dosyasına yazılamıyor. Lütfen chmod izinlerini 0777 yapın.';
}
?>
<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>QuickHomes Kurulum</title>
    <link href="style.css" rel="stylesheet">
</head>
<body>

<?php if($step == 0): ?>
    <div class="container">
        <h3>Hata: Yazma İzni Yok</h3>
        <p class="error"><?php echo $error; ?></p>
        <a href="index.php">Düzeltince buraya tıklayın</a>
    </div>

<?php elseif($step == 1): ?>
    <div class="container">
        <h3>Adım 1: Dil Seçimi</h3>
        <table border="0" cellpadding="10">
            <tr>
                <td align="center"><a href="index.php?lang=english"><img src="images/flag_en.gif"><br>English</a></td>
                <td align="center"><a href="index.php?lang=german"><img src="images/flag_german.gif"><br>Deutsch</a></td>
                <td align="center"><a href="index.php?lang=french"><img src="images/flag_french.gif"><br>Français</a></td>
            </tr>
            <tr>
                <td align="center"><a href="index.php?lang=spanish"><img src="images/flag_spanish.gif"><br>Español</a></td>
                <td align="center"><a href="index.php?lang=italian"><img src="images/flag_italian.gif"><br>Italian</a></td>
            </tr>
        </table>
    </div>

<?php elseif($step == 2): ?>
    <div class="container">
        <h3>Adım 2: Lisans Doğrulama</h3>
        <form method="post">
            <p>Lisans kodunu girin (Herhangi bir kod geçerlidir):</p>
            <input name="PCode" type="text" value="BYPASS-MODE-ACTIVE" required>
            <input name="lang" type="hidden" value="<?php echo $_POST['lang'];?>">
            <br><br>
            <button type="submit" class="btn btn-success">Devam Et</button>
        </form>
    </div>

<?php elseif($step == 3): ?>
    <div class="container">
        <h3>Adım 3: Veritabanı Bilgileri</h3>
        <form method="post">
            <?php if($error) echo "<p class='error'>$error</p>"; ?>
            <label>Sunucu:</label> <input name="DBHost" type="text" value="localhost">
            <label>Veritabanı Kullanıcı:</label> <input name="DBUser" type="text" required>
            <label>Şifre:</label> <input name="DBPass" type="password">
            <label>Veritabanı Adı:</label> <input name="DBName" type="text" required>
            <label>Tablo Ön eki:</label> <input name="DBPre" type="text" value="ad_">
            <label>Varsayılan Ülke:</label>
            <select name="default_country" required>
                <?php
                $countries = get_all_country_list();
                foreach($countries as $code => $name) echo "<option value='".strtolower($code)."'>$name</option>";
                ?>
            </select>
            <input name="PCode" type="hidden" value="<?php echo $_POST['PCode'];?>">
            <input name="lang" type="hidden" value="<?php echo $_POST['lang'];?>">
            <br><br>
            <button type="submit" class="btn btn-success">Yükle</button>
        </form>
    </div>

<?php elseif($step == 4): ?>
    <div class="container">
        <h3>Adım 4: Admin Bilgileri</h3>
        <form method="post">
            <label>E-posta:</label> <input name="admin_email" type="email" required>
            <label>Kullanıcı Adı:</label> <input name="adminuser" type="text" required>
            <label>Şifre:</label> <input name="adminpass" type="password" required>
            <input type="hidden" name="DBHost" value="<?php echo $_POST['DBHost'];?>">
            <input type="hidden" name="DBName" value="<?php echo $_POST['DBName'];?>">
            <input type="hidden" name="DBUser" value="<?php echo $_POST['DBUser'];?>">
            <input type="hidden" name="DBPass" value="<?php echo $_POST['DBPass'];?>">
            <input type="hidden" name="DBPre" value="<?php echo $_POST['DBPre'];?>">
            <input type="hidden" name="PCode" value="<?php echo $_POST['PCode'];?>">
            <input type="hidden" name="default_country" value="<?php echo $_POST['default_country'];?>">
            <input type="hidden" name="lang" value="<?php echo $_POST['lang'];?>">
            <br><br>
            <button type="submit" id="confirm" class="btn btn-success">Kurulumu Tamamla</button>
            <div id="alert" style="display:none; color:green;">Lütfen bekleyin, kurulum yapılıyor...</div>
        </form>
    </div>

<?php elseif($step == 5): ?>
    <div class="container">
        <h3>Kurulum Başarılı!</h3>
        <p>Lütfen <strong>install</strong> dizinini sunucudan silin.</p>
        <a href="../home">Ana Sayfa</a> | <a href="../admin/">Yönetim Paneli</a>
    </div>
<?php endif; ?>

<script>
    var btn = document.getElementById('confirm');
    if(btn) {
        btn.onclick = function() {
            document.getElementById('alert').style.display = 'block';
        }
    }
</script>
</body>
</html>
 

Desperados

3 Kas 2023
548 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
installer.php

Kod:
<?php

function get_random_string($length = 10) {
    $key = '';
    $keys = array_merge(range(0, 9), range('a', 'z'));

    for ($i = 0; $i < $length; $i++) {
        $key .= $keys[array_rand($keys)];
    }

    return $key;
}

/**
 * Dosya içeriğini güvenli bir şekilde okur
 */
function getFile($filename)
{
    if (!file_exists($filename)) {
        return '';
    }
    return file_get_contents($filename);
}

/**
 * Dosyayı güvenli bir şekilde yazar (Klasör yoksa oluşturur)
 */
function writeFile($filename, $buffer)
{
    $dir = dirname($filename);
    if (!is_dir($dir)) {
        mkdir($dir, 0755, true);
    }
    return file_put_contents($filename, $buffer);
}

/**
 * SQL dosyasındaki tablo ön ekini değiştirir
 */
function setSqlWithDbPrefix($rawFilePath, $filePath, $prefix)
{
    $sql = getFile($rawFilePath);
    if (empty($sql)) {
        return '';
    }

    $sql = str_replace('<<prefix>>', $prefix, $sql);
    writeFile($filePath, $sql);

    return $sql;
}

/**
 * SQL dosyasını satır satır okuyarak veritabanına aktarır (Büyük dosyalar için güvenli)
 */
function importSql($con, $filePath)
{
    if (!file_exists($filePath)) {
        return false;
    }

    try {
        $errorDetect = false;
        $tmpline = '';
        
        // Dosyayı bellek dostu yöntemle (satır satır) aç
        $handle = fopen($filePath, "r");
        if ($handle) {
            while (($line = fgets($handle)) !== false) {
                // Yorum satırlarını ve boşlukları atla
                if (substr(trim($line), 0, 2) == '--' || trim($line) == '' || substr(trim($line), 0, 2) == '/*') {
                    continue;
                }

                $tmpline .= $line;
                
                // Eğer satır sonu ";" ile bitiyorsa sorguyu çalıştır
                if (substr(trim($line), -1, 1) == ';') {
                    if (!$con->query($tmpline)) {
                        echo "<pre>Sorgu Hatası: " . $con->error . "\nKod: " . $tmpline . "</pre>";
                        $errorDetect = true;
                    }
                    $tmpline = '';
                }
            }
            fclose($handle);
        }

        // İşlem bittikten sonra geçici SQL dosyasını sil
        @unlink($filePath);
        return !$errorDetect;

    } catch (\Exception $e) {
        echo '<pre>Veri aktarım hatası: ' . $e->getMessage() . '</pre>';
        return false;
    }
}

/**
 * Ülke veritabanını içe aktarır
 */
function importGeonamesSql($con, $prefix, $default_country)
{
    if (empty($default_country)) return false;

    $filename = 'database/countries/' . strtolower($default_country) . '.sql';
    $rawFilePath = '../storage/' . $filename;
    $filePath = '../storage/installed-db/' . $filename;

    setSqlWithDbPrefix($rawFilePath, $filePath, $prefix);

    return importSql($con, $filePath);
}

/**
 * Veritabanı şemasını (Tablo yapılarını) oluşturur
 */
function importSchemaSql($con, $prefix)
{
    $filename = 'database/schema.sql';
    $rawFilePath = $filename;
    $filePath = 'installed-db/' . $filename;

    setSqlWithDbPrefix($rawFilePath, $filePath, $prefix);

    return importSql($con, $filePath);
}

/**
 * Varsayılan verileri yükler
 */
function importDataSql($con, $prefix)
{
    $filename = 'database/data.sql';
    $rawFilePath = $filename;
    $filePath = 'installed-db/' . $filename;

    setSqlWithDbPrefix($rawFilePath, $filePath, $prefix);

    return importSql($con, $filePath);
}

function get_all_country_list(){
    return array(
        'AF' => 'Afghanistan', 'AX' => 'Aland Islands', 'AL' => 'Albania', 'DZ' => 'Algeria',
        'AS' => 'American Samoa', 'AD' => 'Andorra', 'AO' => 'Angola', 'AI' => 'Anguilla',
        'AQ' => 'Antarctica', 'AG' => 'Antigua and Barbuda', 'AR' => 'Argentina', 'AM' => 'Armenia',
        'AW' => 'Aruba', 'AU' => 'Australia', 'AT' => 'Austria', 'AZ' => 'Azerbaijan',
        'BS' => 'Bahamas', 'BH' => 'Bahrain', 'BD' => 'Bangladesh', 'BB' => 'Barbados',
        'BY' => 'Belarus', 'BE' => 'Belgium', 'BZ' => 'Belize', 'BJ' => 'Benin',
        'BM' => 'Bermuda', 'BT' => 'Bhutan', 'BO' => 'Bolivia', 'BA' => 'Bosnia and Herzegovina',
        'BW' => 'Botswana', 'BR' => 'Brazil', 'BN' => 'Brunei', 'BG' => 'Bulgaria',
        'BF' => 'Burkina Faso', 'BI' => 'Burundi', 'KH' => 'Cambodia', 'CM' => 'Cameroon',
        'CA' => 'Canada', 'CV' => 'Cape Verde', 'KY' => 'Cayman Islands', 'CF' => 'Central African Republic',
        'TD' => 'Chad', 'CL' => 'Chile', 'CN' => 'China', 'CO' => 'Colombia',
        'KM' => 'Comoros', 'CG' => 'Congo', 'CR' => 'Costa Rica', 'HR' => 'Croatia',
        'CU' => 'Cuba', 'CY' => 'Cyprus', 'CZ' => 'Czech Republic', 'DK' => 'Denmark',
        'DJ' => 'Djibouti', 'DM' => 'Dominica', 'DO' => 'Dominican Republic', 'EC' => 'Ecuador',
        'EG' => 'Egypt', 'SV' => 'El Salvador', 'EE' => 'Estonia', 'ET' => 'Ethiopia',
        'FI' => 'Finland', 'FR' => 'France', 'GA' => 'Gabon', 'GM' => 'Gambia',
        'GE' => 'Georgia', 'DE' => 'Germany', 'GH' => 'Ghana', 'GR' => 'Greece',
        'GT' => 'Guatemala', 'GN' => 'Guinea', 'HT' => 'Haiti', 'HN' => 'Honduras',
        'HU' => 'Hungary', 'IS' => 'Iceland', 'IN' => 'India', 'ID' => 'Indonesia',
        'IR' => 'Iran', 'IQ' => 'Iraq', 'IE' => 'Ireland', 'IL' => 'Israel',
        'IT' => 'Italy', 'JM' => 'Jamaica', 'JP' => 'Japan', 'JO' => 'Jordan',
        'KZ' => 'Kazakhstan', 'KE' => 'Kenya', 'KR' => 'Korea', 'KW' => 'Kuwait',
        'KG' => 'Kyrgyzstan', 'LV' => 'Latvia', 'LB' => 'Lebanon', 'LY' => 'Libya',
        'LT' => 'Lithuania', 'LU' => 'Luxembourg', 'MK' => 'Macedonia', 'MG' => 'Madagascar',
        'MY' => 'Malaysia', 'ML' => 'Mali', 'MT' => 'Malta', 'MX' => 'Mexico',
        'MD' => 'Moldova', 'MC' => 'Monaco', 'MN' => 'Mongolia', 'ME' => 'Montenegro',
        'MA' => 'Morocco', 'MZ' => 'Mozambique', 'NA' => 'Namibia', 'NP' => 'Nepal',
        'NL' => 'Netherlands', 'NZ' => 'New Zealand', 'NI' => 'Nicaragua', 'NE' => 'Niger',
        'NG' => 'Nigeria', 'NO' => 'Norway', 'OM' => 'Oman', 'PK' => 'Pakistan',
        'PA' => 'Panama', 'PY' => 'Paraguay', 'PE' => 'Peru', 'PH' => 'Philippines',
        'PL' => 'Poland', 'PT' => 'Portugal', 'QA' => 'Qatar', 'RO' => 'Romania',
        'RU' => 'Russia', 'RW' => 'Rwanda', 'SA' => 'Saudi Arabia', 'SN' => 'Senegal',
        'RS' => 'Serbia', 'SG' => 'Singapore', 'SK' => 'Slovakia', 'SI' => 'Slovenia',
        'ZA' => 'South Africa', 'ES' => 'Spain', 'LK' => 'Sri Lanka', 'SD' => 'Sudan',
        'SE' => 'Sweden', 'CH' => 'Switzerland', 'SY' => 'Syria', 'TW' => 'Taiwan',
        'TJ' => 'Tajikistan', 'TZ' => 'Tanzania', 'TH' => 'Thailand', 'TN' => 'Tunisia',
        'TR' => 'Turkey', 'TM' => 'Turkmenistan', 'UA' => 'Ukraine', 'AE' => 'United Arab Emirates',
        'UK' => 'United Kingdom', 'US' => 'United States', 'UY' => 'Uruguay', 'UZ' => 'Uzbekistan',
        'VE' => 'Venezuela', 'VN' => 'Vietnam', 'YE' => 'Yemen', 'ZM' => 'Zambia', 'ZW' => 'Zimbabwe'
    );
}
 

aliceri20172017

8 Tem 2020
81 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV: