←  Izdelava spletnih strani

Računalniški forum - Računalniške novice

»

Vse o PHPju

abruzii™-ova slika abruzii™ 20 mar 2009

lulika123, poglej malo višje po temi oz. na podstraneh te teme, pa boš hitro ugotovil, koliko oz. kateri so strokovnjaki na področju PHP-ja!
Pošlji jim ZS in se dogovorite.
Odgovori

xfirestorm-ova slika xfirestorm 23 mar 2009

A ma kdo mogoče to tabelo kjer so te zamenjave za URL znakce? Kot recimo %20 je za space(presledek) itd.

Ehz...nevermind.
http://www.blooberry...urlencoding.htm
Odgovori

gggggg123-ova slika gggggg123 30 mar 2009

Tole naj bi bil nek installer rad bi da se izpiše text če je baza dodana, se da brez preverjanja s query?
$sql = "CREATE DATABASE IF NOT EXISTS $database";

		mysql_query ($sql);

Tole bo za izpis uporabnika rad bi da pri vsaki funkciji napišem kaj naj vrne te vrednosti vrednost $nick , $id .. da funkcija vrne in jo sam izpišem kjer mi paše. A bi lahko za to uporabil oop?
function username ($select, $id) {

	global $conn;

	

	$sql = "SELECT $select FROM user WHERE id=$id";

	$result = mysql_query ($sql);

	$result = mysql_fetch_assoc ($result);

	//extract ($result);

	return extract ($result);

}



username ("username", 2);

echo $username;

Bi se dalo v nekem direktoriju kjer je veliko fajlov vedno naštimat da includa header.php brez da v te fajle karkoli vpisujem.
Odgovori

Nejc-ova slika Nejc 19 jun 2009

Info:

Pršu PHP 5.2.10 cela verzija, kjer je popravleno prej 100 bugov... tko da vsi ki mate serverje, upgrade :) več na --> php.net
Odgovori

Murder Inc.-ova slika Murder Inc. 21 jun 2009

Pozdrav,

sem še čisto zelen v php-ju in bi rabu majhno pomoč. Izpisal sem si kratko kodo za Contact form. Bi lahko nekdo pogledal, kaj je narobe z kodo:
1. ko testiram na strežniku, mi v body izpiše samo FROM in MESSAGE?!
2. Ter oba izpisa sta v isti vrstici čeprav sem jih v kodi ločil!?
3. spodaj php koda, malo nižje pa še html

<?php
$to = "YourMail@yahoo.com";
$subject = $_POST["title"];
$name = $_POST["name"];
$message = $_POST["message"];
$messagesent = "From: $name Message: $message";
$from = $_POST["email"];
$headers = "From: $from";

$body = <<<EOD
<br><hr><br>
<br>Email: $name </br>
<br>Name: $name </br>
<br>Phone: $phone </br>
<br>Subject: $subject </br>
<br>Comments: $message </br>
EOD;

mail($to,$subject,$messagesent,$headers);
echo "Your message has been sent, thank you.";
?>


<style type="text/css">
<!--
form {
width: 400px;
}
-->
</style>
<form name="form" action="contact.php" method="post">
<p>
Name<br />
<input type="text" name="name"><br />
Email: <br />
<input type="text" name="email"><br />
Phone:<br />
<input type="text" name="phone"><br />
Title: <br />
<input type="text" name="title"><br/>
Comments:<br/>
<textarea cols="40" rows="5" name="message"></textarea><br/>
</p>

<label>
<input name="Reset" type="reset" value="Počisti" />
</label>
<input type="submit" value="Pošlji" /><br/>

</form>
Odgovori

zaxy-ova slika zaxy 21 jun 2009

Če grem na hitro po tvojih vprašanjih:

1. V bodyju ne vem, kje bi ti lahko izpisalo FROM in MESSAGE, ker spremenljivke $body sploh ne uporabljaš, pa tudi v $body nikjer ne piše ne "from" ne "message".
2. Če si imel v mislih $messagesent, naj ti povem, da tam nisi ločil ničesar. Če želiš novo vrstico, moraš dodat znak za novo vrstico - \n oz. <br />, če pošiljaš v HTML.
3. Malo sem spremenil tvojo kodo.

<?php
//preverimo, če so podatki iz forme poslani
if($_SERVER['REQUEST_METHOD'] == "POST")
{

$to = "YourMail@yahoo.com";
$subject = $_POST["title"];
$name = $_POST["name"];
$message = $_POST["message"];
$from = $_POST["email"];
$headers = "From: $from\r\n";

$body = "
<br><hr><br>
<br>Email: $name </br>
<br>Name: $name </br>
<br>Phone: $phone </br>
<br>Subject: $subject </br>
<br>Comments: $message </br>
";

if(mail($to, $subject, $body, $headers))
echo "Your message has been sent, thank you.";
else
echo "Not sent!";
}

?>

Kar sem spremenil, je označeno z rdečo. Predlagam, da si malo prebereš uradno dokumentacijo, kako se funkcija mail() sploh uporablja. Namreč headerji so ločeni na koncu z znakom za novo vrstico (\r\n) itn. Poleg tega predlagam tudi, da si malo pogledaš še HTML, saj element </br> ne obstaja.

Še nasvet - email sporočila se privzeto ne obravnavajo kot html. Če boš želel pošiljati v html, boš moral dodati nekaj headerjev, kar pa si lahko pogledaš v uradni dokumentaciji. Če želiš pa samo dodati nove vrstice pa uporabi znak \n.
Odgovori

Murder Inc.-ova slika Murder Inc. 21 jun 2009

THANKS ZAXY
Odgovori

GoGy82-ova slika GoGy82 21 jun 2009

THANKS ZAXY


Poleg Zaxy-jevih komentarjev bi dodal še to, da bi bilo dobro malce prečistiti sprejeto vsebino preko metode POST. Kaj hitro se lahko zgodi, da tvojo kontaktno skripto uporabijo za pošiljanje spama s tvojega naslova, kar lahko privede do velike obremenitve strežnika in posledično tega, da te ponudnik gostovanja odklopi.
Odgovori

Nejc-ova slika Nejc 21 jun 2009

GoGy82 se strinjam... al pa vsaj $to zamenja z nekim define pa vedno on dobi, pa čeprav "svinjarijo"...

drugače pa, a je tole popembno da si popravil?:
$headers = "From: $from\r\n";

Mislim saj ni nič narobe, ampak ne bi bilo treba (?) :)
Odgovori

zaxy-ova slika zaxy 21 jun 2009

No, v varnost se mi zaenkrat ni zdelo smiselno spravljat, ker je potrebno najprej razčistit osnove. Če nekdo ne pozna niti veljavnih HTML elementov, mu težko kaj poveš o email injection ipd.

@Nejc, hehe :) stvar principa.. :whistle:
Odgovori

alen1-ova slika alen1 06 jan 2010

Pozdravljeni! Imam eno težavico.
Imam stran, ki je v angleščini in slovenščini in vsaka stran je v svoji datoteki (domov.php, kontakt.php, galerija.php...) vseh datotek skupaj z angleščino je okrog 45. Kako bi lahko dal te datoteke v dve mapi eng in slo in vse klical iz stani domov.php oz. na angleški je home.php. index.php pa je intro datoteka. Se da kako rešit to? Hvala.
Odgovori

zaxy-ova slika zaxy 06 jan 2010

Pač dodaš eno spremenljivko, ki ti pove kateri jezik uporabljaš.

$lang = (isset($_GET['lang'])) ? $_GET['lang'] : 'si';

include($lang . '/41-datoteka.php');

Seveda ustvariš 2 mapi ->"si" in "en".
Odgovori

alen1-ova slika alen1 06 jan 2010

Ja in kako potem komplet strukturiram, da mi vleče vn? Recimo da bi bilo potem v eni datoteki oz. dveh domov.php in home.php (ne vem kako se točno naredi) povezane te datoteke. Da bi bil prikaz v naslivni vrstici npr.: domena/domov.php?nekoime=1 ali kako točno že pride. Ne obvladam ravno php-ja zato je pa tako :D
Odgovori

xfirestorm-ova slika xfirestorm 07 jan 2010

Erm...prvo kot prvo, večjezičnost se ne dela na tak način da imaš za vsak jezik svojo kopijo strani.
Narediš stran, recimo v angleščini, namesto vsakega teksta daš pa spremenljivko. Recimo da imaš to na index.php:
Hi!
Welcome to mah 1337 page!
Narediš takole:
<?php
$hi;
$welcome;
?>
Potem ustvariš za vsak jezik svojo datoteko, kjer te spremenljivke nastaviš, recimo za ang:
<?php
$hi = "Hi!";
$welcome = "Welcome to mah 1337 page!";
?>
In slovenščino:
<?php
$hi = "Pozdravljeni!";
$welcome = "Dobrodošli na moji 1337 strani!";
?>

Potem daš pa v index.php na vrhu zraven še:
$lang = (isset($_GET['lang'])) ? $_GET['lang'] : 'si';

include($lang . '/prevod-index.php');
Ali kakorkoli že pač poimenuješ to tvojo datoteko z prevodi.

To kar pa v drugem postu sprašuješ pa je ravno tole:
$nekoime = (isset($_GET['nekoime'])) ? $_GET['nekoime']:''

switch ($nekoime)
{
default:
include('index.php.php');
break;
case "1":
include('nekastran.php');
break;
}

P.S: če maš dosti teksta, predlagam kar array. Lep primer maš recimo na PhpBB, potegni si ga dol in se tam malo razglej kako je rešeno, mislim da ni pretežak za razumet.
Odgovori

wexot-ova slika wexot 07 jan 2010

Lep pozdrav

Zaj vas bo pa en rookie prosil za pomoč.

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title></title>
  
  <style>
  td.izbrana { background-color:#00CC00; }
  
  </style>
</head>
<body>
<form action="naloga2.php" name="form" method="get">
<?PHP
	$N=$_GET["vpis"];
	$presteto=$_GET["igra"];
	$stevec=0;
	$bo=0;
	$igra=0;

	echo "<table border='1px' cellspacing='0px'>";

	for($i=1;$i<=$N;$i++)
	{
		echo "<tr>";
		for($j=1;$j<=$N;$j++)
		{
			$bo=rand(1,5);
			
			$stevec++;
			if($bo==5)
			{
				echo "<td class='izbrana'>$stevec</td>";
				$igra++;
			}
			else
			{
				echo "<td>$stevec</td>";
			}
				
		}
		echo "</tr>";
	}
	echo "</table>";
	
?>
<br/>
<input type="text" value="Vpisi stranico tabele" name="vpis" />
<input type="submit" value="Osvezi" name="gumb" />
<p>Koliko celic je obarvanih</p>
<input type="text" name="igra" />
<input type="submit" value="Preveri" name="btn_igra" />

</form>
</body>

Zakaj mi ko zazenem, to stran napise

Notice: Undefined index: vpis in S:\homes\naloga2.php on line 15

Notice: Undefined index: igra in S:\homes\naloga2.php on line 16


No... saj vem zakaj mi to izpise, zaradi $N=$_GET["vpis"] in $presteto=$_GET["igra"]. Samo nevem kako naj naredim drugace. Aja gumb more biti tam ko je.

Ok in se en problem. Naredil bi rad, da v trenutku ko bi se tabela izrisala, bi zacelo steti cas ( min : sec ). Pripravlen imam tudi ze textbox za vpis obarvanih polj in gumb pa preverjanje.


Vrednost obarvanih polj bi moral skriti v <input type='hidden' /> ( nevem kako ), in prav tako tudi cas "stetja".

Ok razumem, gumb za nastavljanje stranic ( poslje podatek / stevilo ) v form, in ce prav razumem forme, potem metoda action="blabla.php" nalozi blabla.php v trenutku ko je gumb pritisnjen.

Torej se meni tisto refresha 2x
-1. ko vpisem stevilo celic ---> refresh
-2. ko podam resitev obarvanih celic ---> refresh

In potem se mi vsota pobarvanih celic spremeni.
Tako da nimam vec idej kako naj to izvedem.

Za lazje razumevanje prilagam link z sliko, kako naj bi vse to izgledalo.

http://uss.feri.uni-...a12/naloga5.gif


Prosim za pomoc.

Sebastjan
Odgovori

TechFreak:)-ova slika TechFreak:) 07 jan 2010

$presteto=(isset($_GET["igra"]) ? $_GET["igra"] : "";

In to potrebuješ pri vsakem $_GET.

Lahko pa nastaviš, da ti ne izpisuje noticev:

error_reporting(E_ALL ^ E_NOTICE);
To moraš napisati na vrhu datoteke, takoj za <?php.
Odgovori

wexot-ova slika wexot 07 jan 2010

hvala webphp

Tisti zgornji izraz ko si mi napisal, mi sicer nekaj nagaja.
Spodni pa dela =P

Se mogoce kaksen namig, za moj drugi problem?
Odgovori

mlavta1-ova slika mlavta1 07 jan 2010

Za drugi problem boš gotovo moral uporabiti javascript ali ajax.
Odgovori

wexot-ova slika wexot 07 jan 2010

Za drugi problem boš gotovo moral uporabiti javascript ali ajax.


Emm... tam ko so navodila od te vaje pise, da js ali ajax nista potrebna. Samo php

Kak lahko znotraj php-ja priredis vrednost <input>

Probal sem z echo "<input type='hidden' value='$nekepac' />", samo mi javi error
Odgovori

TechFreak:)-ova slika TechFreak:) 07 jan 2010

$presteto=(isset($_GET["igra"])) ? $_GET["igra"] : "";
En oklepaj manjka.

Preizkusi:
echo "<input type='hidden' value='".$nekepac."' />";
Odgovori

Hitri odgovor