Skocz do zawartości

zmiana konkretnej zmiennej w mysql przez PHP


dzelo3

Rekomendowane odpowiedzi

witam.

mam pytanie na które nie znalazłem odpowiedzi ani na tym forum ani w google...

a mianowicie :

 

przykładowo mam pewien wpis w MySQL który ma 5 kolumn

a ja mam zamiar zmienić dwie z tych zmiennych.

jak powinien wyglądać kod wpisania zmiennych ?

 

próbowałem sam coś wymyślić :P

 

mysql_query("INSERT INTO logowanie WHERE uzytkownik = '$login' SET typ_gry='$typ' ");

 

tylko że to nie działa... :P potrzebuje to teraz więc prosze o szybką odp.

Odnośnik do komentarza
Udostępnij na innych stronach

świetnie, dzieki znalazlem co chciałem a teraz mam kolejne pytanie żeby nie robić nowego tematu :P

 

najlepiej opisze co chce zrobić zanim zadam pytanie :

 

mam w jednym pliku php np zmienną $cos

z tego pliku mam ustawione przekierowanie na plik html po czym znowy inny plik php

w tym ostatnim chce użyć znowu zmiennej $cos

 

próbowałem zobaczyć jak to wyjdzie poprzez print w ostatnim php i nic nie wyświetliło

da się może wyciągnąć ostateczną postać tej zmiennej z pierwszego ???

albo (jak czytałem w necie) zrobić zmienną "superglobalną" (?)

 

wyjaśni mi to ktoś jak najprościej ? ;/

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Musisz gdzieś ją zapisać - można użyc mechanizmu sesji, chociaż typowego $_SESSION odradzam (chociażby dlatego, że mając konto na tym samym serwerze można sesję przejąć... chociaż to pewnie też kwestia hostingu).

Poczytaj w sieci, jak okaże się za trudne, to zostań przy session_start() i $_SESSION.

Odnośnik do komentarza
Udostępnij na innych stronach

nie znam się za bardzo na sesjach ale zrobiłem coś takiego :

 

 

<?php

 

session start();

 

$connection = @mysql_connect('host', 'log', 'pass')

or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());

echo "";

 

$db = @mysql_select_db('baza', $connection)

or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());

echo "";

 

$login = $_POST['attachedl'];

$pass = $_POST['attachedp'];

 

$wynik = mysql_query("SELECT haslo FROM logowanie WHERE uzytkownik = '$login'");

$rekord = mysql_fetch_array($wynik);

$b_pass = $rekord['haslo'];

 

 

if ($pass == $b_pass)

{

 

 

$wynik4 = mysql_query("SELECT id FROM logowanie WHERE uzytkownik = '$login'");

$rekord4 = mysql_fetch_array($wynik4);

$id_b = $rekord5['id'];

$wynik5 = mysql_query("SELECT typ_gry FROM logowanie WHERE id = '$id_b'");

$rekord5 = mysql_fetch_array($wynik5);

$typ_b = $rekord5['typ_gry'];

 

$_SESSION['log'] = $login;

$_SESSION['pas'] = $pass;

 

 

$adres = 'http://mercenaries.net63.net/wyb.html';

header('HTTP/1.1 301 Moved Permanently');

header('Location: '.$adres);

 

}

else

{

print 'nie zalogowano';

}

?>

 

 

 

 

no i wywala taki błąd :

 

Parse error: syntax error, unexpected T_STRING in /home/a9213621/public_html/log_skrypt.php on line 8

 

o co kmn ? help wytłumaczycie krok po kroku jak to działa ? ;/ a może jakiś prosty i krótki kurs / tutoriar ?

Odnośnik do komentarza
Udostępnij na innych stronach

die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());

O tym zapomnij usera nie interesuje czy masz problemy z połączeniem

 

Hasło powinieneś przechowywać na serwerze w formie zakodowanej np przez md5() a potem porównywać if(md5($pass) == $b_pass)

 

Mógłbym ci trochę podesłać własnych przykładów bo trochę już w tym siedzę, jak chcesz wyślij PW to coś ci przygotuję.

Odnośnik do komentarza
Udostępnij na innych stronach

zmieniłem silnik logowania i rejestracji...

a raczej zgapiłem :P link : http://webmade.org/porady/sesje-php-system-logowania.php

w kazdym razie po drobnych przeróbkach działa jak ma działać...

 

mam kolejne pytanko odnośnie php (przepraszam że w tym samym temacie...)

jak do tego wyżej(link) mógłbym w url dodać losowy ciąg znaków jak to na lepszych stronach bywa ?

oraz...

jest gdzieś może na GMC jakiś gotowy shoutbox prosty w edycji ? :P

a może Konrad - GM udostępni ten którym się chwalił na shoucie

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Zmienną można zapisać w bazie, czy w pliku, żeby potem przenieść - ale jak na stronie są co najmniej dwie osoby na raz, to trzeba je czymś rozróżniać - najlepiej unikalnym ID sesji - tak naprawdę do tego jest ona potrzebna. Ja np. napisałem sobie taki system sam - ale z wiadomych względów nie mogę się podzielić :D

Odnośnik do komentarza
Udostępnij na innych stronach

tam wyżej to chodziło mi właśnie o to żeby po zalogowaniu przekazywać po dalszych plikach php id usera zeby on widział co innego i inny user co innego... :]

 

gnysek: a nie mógł byś właśnie mi wysłać czegoś do robienia tego unikalnego adresu url ? ;/

 

nadal czekam na odp do mojego postu wyżej...

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli Cię interesuje SB:

<?php
    class web
    {
        static function open_connection()
        {
            mysql_connect( "127.0.0.1", "root" );
            mysql_select_db( "bujaka_db" );
            mysql_query( "SET NAMES utf8" );
            
            return true;
        }
        
        static function close_connection()
        {
            mysql_close();
        }
        
        static function find_client_ip()
        {
            if( !empty( $_SERVER['HTTP_CLIENT_IP'] ) )
            {
                $ip = $_SERVER['HTTP_CLIENT_IP'];
            }
            elseif( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) )
            {
                $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
            }
            else
            {
                $ip = $_SERVER['REMOTE_ADDR'];
            }
            
            return $ip;
        }
        
        static function date_diff_sec( $date_1, $date_2 )
        {
            $date_1 = new DateTime( $date_1 );
            $date_2 = new DateTime( $date_2 );
            
            $interval = $date_1->diff( $date_2 );

            return ($interval->h*3600 + $interval->i*60 + $interval->s);
        }
        
        static function push_mysql_error()
        {
            print "<span class='error'>MySQL query failed!<br>".mysql_error()."</span>";
        }
        
        static function banned_ip( $ip )
        {
            $query = "SELECT ip FROM banned WHERE ip=INET_ATON('$ip')";
            $result = mysql_query( $query );
            
            if( $result )
            {
                if( mysql_fetch_assoc( $result ) ) // ?? Bez tego nie dziala poprawnie :P
                    return true;
            }

            return false;
        }
        
        static function admin_permissions()
        {
            if( isset( $_SESSION['username'], $_SESSION['password'] ) )
            {
                $username = trim( $_SESSION['username'] );
                $password = trim( $_SESSION['password']);
                
                if( web::open_connection() )
                {
                    $ip  = web::find_client_ip();
                
                    if( web::banned_ip( $ip ) )
                    {
                        web::close_connection();
                    
                        return false;
                    }
                
                    $query = "SELECT secure, name FROM admin WHERE username='$username' AND password='$password'";
                    $result = mysql_query( $query );
                    
                    if( $result )
                    {
                        $row = mysql_fetch_assoc( $result );
                    
                        if( $row )
                        {
                            if( $row['secure'] < 3 )
                            {
                                mysql_query( "UPDATE admin SET secure='0' WHERE username='$username'" );
                            
                                web::close_connection();
                                return true;
                            }
                        }
                        else
                        {
                            $query = "SELECT secure FROM admin WHERE username='$username'";
                            $result = mysql_query( $query );
                            
                            if( $result )
                            {
                                $row = mysql_fetch_assoc( $result );
                                
                                if( $row['secure'] < 3 )
                                {
                                    $try = $row['secure'] + 1;
                                
                                    mysql_query( "UPDATE admin SET secure='$try', ip=INET_ATON('$ip') WHERE username='$username'" );
                                }
                            }
                        }
                    }
                    
                    web::close_connection();
                }
            }

            return false;
        }
    }
?>

<?php
    require_once( "source.php" );
    
    function push_shout( $date, $author, $content )
    {
        // <div class='shout-bar'><span class='shout-author'>$author</span><span class='shout-date'>$date</span></div>
        // <div class='shout-content'>$content</div>
    
        print "<div class='shout-bar'><span class='shout-author'>$author</span><span class='shout-date'>$date</span></div>";
        print "<div class='shout-content'>$content</div>";
    }
    
    if( !isset( $_POST['type'] ) )
        exit;
    
    if( web::open_connection() )
    {
        // Admin permissions
        $is_admin = web::admin_permissions();
    
        // Load shoutbox content
        if( $_POST['type'] == 'load' )
        {
            $query = "SELECT * FROM shout ORDER BY id DESC LIMIT 30";
            $result = mysql_query( $query );
            
            if( $result )
            {
                while( $row = mysql_fetch_assoc( $result ) )
                {
                    push_shout( $row['date'], $row['author'], $row['content'] );
                }
            }
            else
                web::push_mysql_error();
        }
        
        // Post for new shout
        elseif( $_POST['type'] == 'post' )
        {
            $ip  = web::find_client_ip();
            
            $author = trim( $_POST['author'] );
            $content = $_POST['content'];
        
            // Banned IP
            if( web::banned_ip( $ip ) )
            {
                web::close_connection();
                print "Zostałeś zbanowany!";
            
                exit;
            }
            
            if( $author && trim( $content ) )
            {
                $author_len = strlen( $author );
                $content_len = strlen( $content );

                if( $author_len < 3 )
                    print "Nick jest za krótki! ($author_len/10)";
                elseif( $author_len > 10 )
                    print "Nick jest za długi! ($author_len/10)";
                elseif( $content_len > 255 )
                    print "Tekst jest za długi! ($content_len/255)";
                else
                {
                    $query = "SELECT ip, date FROM shout WHERE ip=INET_ATON('$ip') ORDER BY id DESC LIMIT 1";
                    $result = mysql_query( $query );
                    
                    if( $result )
                    {
                        $row = mysql_fetch_assoc( $result );
                        
                        if( web::date_diff_sec( $row['date'], date("H:i:s") ) < 10 )
                        {
                            print "Spróbuj za 10 sekund";
                            
                            web::close_connection();
                            exit;
                        }
                    }

                    $query = "INSERT INTO shout(ip, date, author, content) VALUES(INET_ATON('$ip'), CURTIME(), \"$author\", \"$content\")";
                    $result = mysql_query( $query );
                    
                    if( !$result )
                        web::push_mysql_error();
                }
            }
            else
                print "Musisz wypełnić pola!";
        }
        
        web::close_connection();
    }
?>

Jest to bardzo prosty SB, wymaga wiele poprawek i optymalizacji :P

 

Jakby się ktoś czepiał, tak, 'date' początkowo miało przechowywać dane typu DATETIME, ale zmieniłem zdanie :P

 

Jbc. kierowane jest pod ajaxa ('POST')

Odnośnik do komentarza
Udostępnij na innych stronach

gdy zauważyłem że coś napisałeś, myślałem że na szybko to przeanalizuje i zaczne modyfikować ale jak widzę tą rozpiętość kodu to zmieniam zdanie :P

ide spać jutro bd nad tym siedział ;] ja dziś już chyba zmęczony :P nq

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...