Скрипт смены ника

3.26K
.
Iron_Man

Здравствуйте, вот пробую переписать скрипт автоматической смены ника для 322, но зашёл в тупик, может вы поможете, нужно чтобы списывалось с balans тот что в users допустим 100 балов, помогите если не трудно

код (+/-)
<?php
define('_IN_JOHNCMS', 1);
$textl = 'Турниры форума';
$rootpath = '';
require_once ("incfiles/core.php");
require_once ("incfiles/head.php");

$name = mysql_fetch_array(mysql_query("SELECT `balans` FROM `shop` WHERE `name`='nik'"));
echo '<div class="phdr">Смена ника на сайте</div>';
echo '<div class="status">Данная функция изменяет Ваш ник</div>';
echo '<div class="menu">Стоимость услуги: ' .$name['balans']. 'баллов сайта</div>';
if ($datauser['balans'] > $name['balans'] && $user_id) {
    if ($_POST['submit']) {
    $reg_nick = isset($_POST['nick']) ? trim($_POST['nick']) : '';
    $lat_nick = rus_lat(mb_strtolower($reg_nick));
    // Проверка Логина
    if (empty($reg_nick))
        $error = 'Не введён ник!<br/>';
    elseif (mb_strlen($reg_nick) < 2 || mb_strlen($reg_nick) > 15)
        $error = 'Недопустимая длина ника (от 2 до 15)<br />';
    if (preg_match("/[^1-9a-z\-\@\*\(\)\?\!\~\_\=\[\]]+/", $lat_nick))
        $error = 'Недопустимые символы в нике!<br/>';
        // Проверка, занят ли ник
        $req = mysql_query("select * from `users` where `name_lat`='" . mysql_real_escape_string($lat_nick) . "';");
        if (mysql_num_rows($req) != 0) {
            $error = 'Этот ник уже зарегистрирован!<br/>';
        }
    
    if ($error) {
        echo '<div class="rmenu">' .$error. '</div>';
    } else {
    $name = check($reg_nick);
    $minus = $datauser['balans'] - $name['balans'];
    mysql_query("UPDATE `users` SET `name`='" .$name. "', `balans`='" .$minus. "' WHERE `id`='" .$user_id. "'");
    echo '<div class="menu">Ник успешно изменён!</div>';    
    }    
    } else {
    echo '<div class="list1">Если хотите воспользоваться услугой, введите в форме ниже желаемый ник:<br />
    <form method="post" target="_blank">
    <input type="text" name="name" value="' .checkout($datauser['name'], 1, 0). '" maxlength="16" /><br />
    <input type="submit" name="submit" value="Изменить" />
    </form></div>';
    }
}
echo '<div class="menu"><a href="magazin.php">В магазин</a></div>';

require_once ("incfiles/end.php");
?>
.
Eternal

Вроде должно работать. А так сейчас не у ПК. Посмотри магазины, где то это уже было

.

Eternal, Я пишу ник нажимаю изменить, выдает "Не введен ник"

.
Hey guys! Finally I'm gonna change status!?

Iron_Man, Это на первый взгляд только

$name = check($reg_nick);//что за хрень?
    $minus = $datauser['balans'] - $name['balans'];//и это тоже?
    mysql_query("UPDATE `users` SET `name`='" .$name. "', `balans`='" .$minus. "' WHERE `id`='" .$user_id. "'");

Ну и там сам дальше разберешься
.

Я же и говорю что зашёл в тупик, нужно чтобы просто списывало -100 балов с баланса юзера, а в этом коде много лишнего

.

Iron_Man, не тестировал

////////// (+/-)
<?php

define('_IN_JOHNCMS', 1);

$headmod = 'rename';
$textl = 'Смена ника';
require_once('incfiles/core.php');
require_once('incfiles/head.php');

if ($user_id) {
	echo '<div class="phdr">Смена ника</div>';
	if ($_SERVER['REQUEST_METHOD'] == 'POST') {
		$nick = isset($_POST['nick']) ? checkin(trim($_POST['nick'])) : '';
		$error = [];
		
		if (empty($nick))
			$error[] = 'Не введен ник';
		if (mb_strlen($nick) < 3 || mb_strlen($reg_nick) > 16)
			$error[] = 'Не соответствует заданной длине';
		
		if (!$error) {
			mysql_query("UPDATE users SET name = '" . mysql_real_escape_string($nick) . "' WHERE id = {$user_id}");
			echo '<div class="gmenu">Ник успешно изменён!</div>';
			header("Refresh:3; url=test.php"); // url поменяешь
		}
		else {
			echo display_error($error, '<a href="test.php">Повторить</a>');
		}
	}
	else {
		echo '<div class="gmenu"><form action="test.php" method="post">' .
			'<p>Введите желаемый ник (min 3, max 16):&nbsp;' .
			'<input type="text" name="nick">' .
			'<input type="submit" value="Сменить"' .
			'</div>';
	}
}
else {
	header('Location: /?');
}
require_once('incfiles/end.php');
.

Str@nnik, Спс, но файл не работает, добавлял в конце ?> Не помогло

.

Iron_Man, щас посмотрю

.

Iron_Man,

/////// (+/-)
<?php

define('_IN_JOHNCMS', 1);
$headmod = 'rename';
$textl = 'Смена ника';
require_once('incfiles/core.php');
require_once('incfiles/head.php');

if ($user_id) {
	echo '<div class="phdr">Смена ника</div>';
	
	if ($_SERVER['REQUEST_METHOD'] == 'POST') {
		$nick = isset($_POST['nick']) ? checkin(trim($_POST['nick'])) : '';
		$error = [];
		
		if (empty($nick))
			$error[] = 'Не введен ник';
		if (mb_strlen($nick) < 3 || mb_strlen($reg_nick) > 16)
			$error[] = 'Не соответствует заданной длине';
		if ($datauser['balans'] < 100)
			$error[] = 'Недостаточно средств';
		
		if (!$error) {
			mysql_query("UPDATE users SET name = '" . mysql_real_escape_string($nick) . "', balans = balans - 100 WHERE id = {$user_id}");
			echo '<div class="gmenu">Ник успешно изменён!</div>';
			header("Refresh:3; url=test.php"); // url поменяешь
		}
		else {
			echo display_error($error, '<a href="test.php">Повторить</a>');
		}
	}
	else {
		echo '<div class="gmenu"><form action="test.php" method="post">' .
			'<p>Введите желаемый ник (min 3, max 16):</p>' .
			'<input type="text" name="nick">' .
			'<p><input type="submit" value="Сменить"></p>' .
			'</form></div>';
	}
}
else {
	header('Location: ?');
}

require_once('incfiles/end.php');

?>
.

Str@nnik, Страница не доступна

Всего: 48