Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Skrypt php z bazy danych
bartekvip
post 12.03.2008, 23:31:18
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 12.03.2008

Ostrzeżenie: (0%)
-----


Mam problem. Zapisałem taki skrypt:
CODE
<?
session_start();

function login_test($sesja, $user){
if($sesja != 1){
echo "
<form action=\"login.php\" method=\"post\">
<table class=\"me\">
<tr><td colspan=\"2\" class=\"meh\">LOGIN</td></tr>
<tr>
<td class=\"mec\">Login:</td>
<td class=\"mec\"><input type=\"text\" name=\"login\" size=\"20\" class=\"site_login\" /></td>
</tr>
<tr>
<td class=\"mec\">Hasło:</td>
<td class=\"mec\"><input type=\"password\" name=\"pass\" size=\"20\" class=\"site_login\" /></td>
</tr>
<tr>
<td colspan=\"2\" align=\"center\"><input type=\"submit\" value=\"LOGUJ\" class=\"site_login\" /></td>
</tr>
</table>
</form><br />
";
} else {
echo "
<table class=\"me\">
<tr>
<td class=\"meh\">Użytkownik</td>
</tr>
<tr>
<td class=\"mec\">
Witaj <b>$user</b>!<br />
<a href=\"?akcja=wyloguj\">Wyloguj</a>
</td>
</tr>
</table><br />
";
}
}
login_test($_SESSION["auth"], $_SESSION["user"]);
?>


Ten kod jest wpisany w bazę danych. Na stronie mam normalne zapytanie mysql_query itp tak, że przywołuje skrypt z bazy. Jednak nie chce mi tego skryptu wykonać, a i próbowałem z <?php i <? dlatego to nie wina short tags. Dlaczeog?

Z głory dzięki za pomoc.
Powód edycji: dodalem tag (cysiaczek)
Go to the top of the page
+Quote Post
nospor
post 12.03.2008, 23:34:48
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




bo funkcje oprocz zadeklarowania nalezy jeszcze wywolac.
  1. <?php
  2. function jakas(){
  3. echo 'cos';
  4. }
  5.  
  6. //wywolanie
  7. jakas();
  8. ?>


edit down: ty moze tepy nie jestes, ale ja za to jestem slepy. sorki.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bartekvip
post 12.03.2008, 23:36:41
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 12.03.2008

Ostrzeżenie: (0%)
-----


Łaaa. Tępy nie jestem. Pisze w tym dziale bo w dziale skrypty wyskoczyło mi, że nie mogę. Zobacz na koniec tego skryptu. Jest wywołanie z danymi.
Go to the top of the page
+Quote Post
nevt
post 12.03.2008, 23:40:35
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


a wywala ci jakieś błędy? sprawdź (tzn. włącz wyświetlanie błędów na serwerze php...)
podejrzewam, że nie powodzi się session_start() - skoro includujesz ten plik do innego, to prawdopodobnie już coś wysłałeś do przeglądarki... a session_start() musi być wywołane przed wysłaniem czegokolwiek...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
bartekvip
post 12.03.2008, 23:44:42
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 12.03.2008

Ostrzeżenie: (0%)
-----


Nie wywala błędów bo używam bufora ob_start(). Po za tym to minimalnie zmodyfikowałem ten skrypt i wstukałem ponownie do bazy danych. Oto ten skrypt:

CODE
function log_test($user, $auth){
if(!isset($user) || !isset($auth)){
echo "


LOGIN

Login:



Hasło:








";
} else {
echo "


Użytkownik



Witaj $user!

Wyloguj




";
}
}

log_test($_SESSION["auth"], $_SESSION["user"]);


Ciągle nie chce go wykonać.

Ten post edytował bartekvip 12.03.2008, 23:45:33
Go to the top of the page
+Quote Post
nevt
post 13.03.2008, 00:10:45
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


tu masz tak:
Cytat
function log_test($user, $auth)

a wywołujesz tak:
Cytat
log_test($_SESSION["auth"], $_SESSION["user"]);

dodałem kolorki żeby lepiej było widać...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
bartekvip
post 13.03.2008, 00:25:30
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 12.03.2008

Ostrzeżenie: (0%)
-----


Ciągle tym manipuluje. Zrezygnowałem z funkcji na rzecz tego:
CODE
if(!isset($_SESSION["auth"]) || !isset($_SESSION["user"])){
echo "


LOGIN

Login:



Hasło:








";
} else {
echo "


Użytkownik



Witaj $user!

Wyloguj




";
}
?>


Jednak przeraża mnie to, że ta funkcja co była wcześniej nawet z błędem nie pokazywał, że coś nawala. A jak kogoś to naprowadzi to wrzucam powtórne wykonanie z bazy (takie)
CODE

if(!isset($_SESSION["auth"]) || !isset($_SESSION["user"])){
echo "
<form action=\\"login.php\\" method=\\"post\\">
<table class=\\"me\\">
<tr><td colspan=\\"2\\" class=\\"meh\\">LOGIN</td></tr>
<tr>
<td class=\\"mec\\">Login:</td>
<td class=\\"mec\\"><input type=\\"text\\" name=\\"login\\" size=\\"20\\" class=\\"site_login\\" /></td>
</tr>
<tr>
<td class=\\"mec\\">Has?o:</td>
<td class=\\"mec\\"><input type=\\"password\\" name=\\"pass\\" size=\\"20\\" class=\\"site_login\\" /></td>
</tr>
<tr[...]


Zmieniłem trochę jeszcze raz i teraz wygląda to tak
  1. <?
  2.  
  3.  if(!isset($_SESSION["auth"]) || !isset($_SESSION["user"])){
  4.  print('
  5.  <form action=login.php method=post>
  6.  <table class=me>
  7.  <tr><td colspan=2 class=meh>LOGIN</td></tr>
  8.  <tr>
  9.  <td class=mec>Login:</td>
  10.  <td class=mec><input type=text name=login size=20 class=site_login></td>
  11.  </tr>
  12.  <tr>
  13.  <td class=\"mec\">Hasło:</td>
  14.  <td class=mec><input type=password name=pass size=20 class=site_login></td>
  15.  </tr>
  16.  <tr>
  17.  <td colspan=2 align=center><input type=submit value=LOGUJ class=site_login></td>
  18.  </tr>
  19.  </table>
  20.  </form><br>
  21.  ');
  22.  } else {
  23.  print('
  24.  <table class=me>
  25.  <tr>
  26.  <td class=meh>Użytkownik</td>
  27.  </tr>
  28.  <tr>
  29.  <td class=mec>
  30.  Witaj <b>$user</b>!<br />
  31.  <a href=?akcja=wyloguj>Wyloguj</a>
  32.  </td>
  33.  </tr>
  34.  </table><br>
  35.  ');
  36.  }
  37.  ?>


Ten post edytował bartekvip 13.03.2008, 00:28:07
Go to the top of the page
+Quote Post
Cienki1980
post 13.03.2008, 08:38:55
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

Ostrzeżenie: (0%)
-----


A czy w tym przypadku nie pomoże funkcja eval() questionmark.gif
Pytam się nieśmiało bo nie jestem przekonany w 100% ale mam takie niejasne wrażenie, że do tego to może się przydać.


--------------------
404
Go to the top of the page
+Quote Post
bartekvip
post 13.03.2008, 11:05:44
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 12.03.2008

Ostrzeżenie: (0%)
-----


W tym problem, że jak wpisałem w bazę danych nawet takie coś:
  1. <?
  2. $a = "cześć";
  3. echo $a;
  4. ?>


To nie może tego wykonać. Może to kwestia typu pola w tabeli. Pole to, w którym jest kod ma typ TEXT, bo jak wiem tylko takie mieszczą duże ciągi znaków.

Może pomoże to, że tak wygląda funkcja wyciągająca menu z bazy dancyh. Ona jest tylko w index.php umieszczona i przywoływana:
  1. <?php
  2. function menu_lewe($prefix){
  3. $zap = "SELECT `navi_name`, `navi_cont`, `navi_pos`, `navi_site` FROM `".$prefix."navi` WHERE `navi_site`='1' ORDER BY `navi_pos`";
  4. $wyk = mysql_query($zap);
  5. while($res = mysql_fetch_array($wyk)){
  6. echo "
  7. <table class=me>
  8. <tr><td class=meh>".$res[0]."<td></tr>
  9. <tr><td class=mec>".$res[1]."</td></tr>
  10. </table><br />
  11. ";
  12. }
  13. }
  14. ?>
Go to the top of the page
+Quote Post
Cienki1980
post 13.03.2008, 11:24:25
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

Ostrzeżenie: (0%)
-----


No to proponuje wykorzystać właśnie eval" title="Zobacz w manualu PHP" target="_manual


--------------------
404
Go to the top of the page
+Quote Post
bartekvip
post 13.03.2008, 12:17:37
Post #11





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 12.03.2008

Ostrzeżenie: (0%)
-----


Spróbowałem. Teraz wyświetlanie wygląda tak:
  1. <?php
  2. function menu_lewe($prefix){
  3. $zap = "SELECT `navi_name`, `navi_cont`, `navi_pos`, `navi_site` FROM `".$prefix."navi` WHERE `navi_site`='1' ORDER BY `navi_pos`";
  4. $wyk = mysql_query($zap);
  5. while($res = mysql_fetch_array($wyk)){
  6. echo "
  7. <table class=me>
  8. <tr><td class=meh>".$res[0]."<td></tr>
  9. <tr><td class=mec>";
  10. $kod = eval($res[1]);
  11. echo $kod;
  12. echo "</td></tr>
  13. </table><br />
  14. ";
  15. }
  16. }
  17. ?>

I wybiło mi takie błędy:
Kod
[b]Parse error[/b]:  syntax error, unexpected '>' in [b]C:\xampp\htdocs\test\function.php(67) : eval()'d code[/b] on line [b]1[/b]


Dzięki. Pokombinowałem trochę i rozwiązałem problem funkcją eval(). Dzięki za pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 08:50