2014-01-13 5 views
0

Я возился с некоторыми php и незнакомы с тем, как обновление массива работает правильно. Вот что у меня есть на данный момент:Обновление массива PHP и обновление серверной части

index.php

<form action="register.php" method="get"> 
register > 
    <input name="reg_username" type="text" /> 
    <input name="reg_password" type="password" /> 
    <input id="submit" type="submit" /> 
</form> 

register.php

<?php 
    $username = $_GET["reg_username"]; 
    $password = $_GET["reg_password"]; 
     include('data/user_data.php'); 
     if(isset($users[$username])): 
      echo "this username is already taken!"; 
     else: 
      array_push($users, $username, $username, $password);    
     endif; 
?> 

user_data.php

<?php $users = array(
dextermb => array("dextermb", "password"), 
tonymb => array("tonymb", "password2") 
) 
?> 

Я хотел бы, чтобы убедиться, что при обновлении массива он остается в том же формате, что и в нем.

"username" => array("username","password")

+0

просто предложение, если вы работаете с паролями вы должны использовать этот пост метод вместо get, метод post более безопасен, так как он не будет проходить через URL. – frosty11x

+0

Да, я слышал о различии: P Просто используйте его, чтобы убедиться, что все работает правильно (например, никаких опечаток, которые могут заставить меня думать, что есть ошибка в коде) :) – Night

ответ

1

Просто добавить новый элемент в массив с именем в качестве ключа и массив, содержащий имя пользователя и пароль:

if(isset($users[$username])): 
    echo "this username is already taken!"; 
else: 
    $users[$username] = array($username, $password); 
endif; 
+0

Это не обновление серверной части? – Night

+0

Что вы подразумеваете под «не обновляет серверную сторону»? –

+0

, чтобы сохранить новый вход массива user_data.php с сервера или экземпляр - если бы я вернулся к index.php и попытался войти в систему с новым «пользователем», он вернется с «не в массив» – Night

0

Пробовали ли вы, как это?

$users[$username] = array($username, $password); 

Чтобы сделать его простым в использовании, вы можете попробовать ниже код также

$users[$username] = $password; // If you have no other data in array 
+0

Это нехорошее решение, если в некоторых случаях $ username было отрицательным числом. Лучше всего всегда использовать константы для ключей в массивах и предотвращать использование переменных. –

+0

Lol .. Имя пользователя отрицательное? Это очень странно. –

+0

Это общее соображение. Когда вы проверяете свой код уверенным, что $ username никогда не может быть отрицательным числом, но в производственной манере оно должно рассматриваться как риск. –

0

array_push() работает только для не-ассоциативных массивов. Вы явно задать ключ массива и связанное с ним значение с:

$array[$key] = array(); 

В результате, ваш код должен выглядеть следующим образом:

if(isset($users[$username])): 
    echo "this username is already taken!"; 
else: 
    $users[$username] = array($username, $password); 
Смежные вопросы