Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Swizz klausimai

Parašė SWIZZ· 2009 Gru. 30 20:12:33
#1

Sveiki,

Čia dėsiu savo klausimus iš PHP. Dabar parsisiųnčiau knyga "PHP Lietuviškai" ir meginu atlikti pats visokias funkcijas.
Taigi dabar pirmas klausimas iš mail ( ) funkcijos.

Susikūriau index.php kuriame yra formą (čia html forma)


<FORM METHOD="POST" ACTION="mail.php3">
Iveskite duomenis:<br /><BR>
Jūsų El.Paštas: <INPUT TYPE="text" size="50" NAME="from"><BR>
Jūsų tekstas: <TEXTAREA NAME="msg" ROWS="3" COLS="50"> </TEXTAREA> <BR>
<INPUT TYPE="Submit" NAME="Ok" VALUE="Išsiusti">
</FORM>





Susikūriau mail.php3 ir jame įrašyta tai:


<?php
$address="tom.swizz@gmail.com";
$subject="Laiškas nuo: $from";
mail ($address,$subject,$msg,"From: $from");
?>





Atrodo viskas tvarkoje, bet taip nėra, nes kai suvedu į formą savo kita El. Paštą (web.swizz@gmail.com) ir tekstą (TESTAS), į mano tom.swizz@gmail.com gaunamas laiškas atrodo taip:


(čia pavadinimas) Laiškas nuo:
(čia tekstas) skirta man


O turėtu būti taip:


(čia pavadinimas) Laiškas nuo: web.swizz@gmail.com
(čia tekstas) TESTAS


Aš manau, kad čia yra blogai, tai, kad mail.php3 failę nėra nurodyta iškur traukti (šiuo atvėju iš index.php) tuos $from ir $msg.
Taigi kaip man padaryti, kad laiške viską vaizduotu puikiai? Arba bent duokit kodą, su kuriuo galima viename faile nurodytus stingus ($msg ir $from) iš index.php, nurodyti kitame faile (šiuo atvėjų mail.php3)...
Ačiū už atsakymus. Šituo klausimu mano tema nesibaigs, čia dėsiu visus klausimus man iškilusius, nes mokausi visokių funkcijų iš knygos :)

Redagavo SWIZZ· 2009 Gru. 30 20:12:57

Parašė Snifass· 2009 Gru. 30 20:12:49
#2

o kur index.html faile rasti $from ?

Parašė Tomcis· 2009 Gru. 30 20:12:09
#3

Be jokių apsaugų ir jeigu abudu laukeliai užpildyti:

Antrą kodą pakeisk į :
<?php
$from = $_POST['from'];
$msg = $_POST['msg'];
$address="tom.swizz@gmail.com";
$subject="Laiškas nuo: $from";
mail ($address,$subject,$msg,"From: $from");
?>



Redagavo Tomcis· 2009 Gru. 30 20:12:17

Parašė SWIZZ· 2009 Gru. 30 21:12:19
#4

iFack parašė:
Be jokių apsaugų ir jeigu abudu laukeliai užpildyti:


Ačiū tau... +10 :) (jei galėsiu)
P.S. Ką turi omenyje "Be jokių apsaugų"?

Parašė Snifass· 2009 Gru. 30 21:12:29
#5

Ta turi omeny ,kad siam kodiu apsaugu nereikia :)

Parašė Tomcis· 2009 Gru. 30 22:12:40
#6

Swizz parašė:
iFack parašė:
Be jokių apsaugų ir jeigu abudu laukeliai užpildyti:


Ačiū tau... +10 :) (jei galėsiu)
P.S. Ką turi omenyje "Be jokių apsaugų"?

Ta prasme, kad nėra tikrinama ar įvestas tekstas į formą ir pnš... ( manau supratai )

Parašė SWIZZ· 2009 Gru. 30 22:12:36
#7

iFack parašė:
Ta prasme, kad nėra tikrinama ar įvestas tekstas į formą ir pnš... ( manau supratai )


Supratau, šį dalyka matau knygoje tuoj prieisiu prie jo, jei kils klausimų rašysiu čia vėl... ;)

Parašė SWIZZ· 2010 Kov. 6 21:03:38
#8

Sveiki,

Turiu problemą ir noriu, kad padėtumete ją išspręsti.
Taigi pas mane dizaine nėra "Readmore" migtuko, todėl norėčiau padaryti, kad paspaudus naujienos pavadinimą atidarytu visa pilną naujieną. Beje dar gal galima būtu padaryti, kad po visa naujiena atsirastu kokie:


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

Ir po jų

Parašė: Swizz | Skaitė: 554 | Komentarų: 54


Štai naujienos kodas. Kas pagelbes duosiu +10 ir gražu komentarą.


function render_news($subject, $news, $info) {

echo "<table width='527' cellpadding='0' cellspacing='0'>
<tr>
<td width='527' class='news-title' align='left'>$subject</td>
</tr>
<tr>
<td class='news-main' width='527' cellpadding='0' cellspacing='0'>
$news
</td>
</tr>
</table><br>\n";

}




Parašė Pakartoti slaptažodį· 2010 Kov. 6 21:03:57
#9

Visu pirma is buvusios READMORE funkcijos isitrauk kintamaji, per kuri ves tave i naujiena, ir tada prie $subject bandyk su <a href>, o del '---', tai su border-top:dashed; (CSS) bandyk kazkaip.. ?|

Parašė SWIZZ· 2010 Kov. 6 21:03:45
#10

Man netinka kažkaip. Man reikia tiksliai. Beje aš su Fusion ilgai neesu dirbęs ilgiau su DLE, bet dabar bandau daryti ir žiūriu kas gaunas. Beje gal kas galit iškarto parašyti visa koda kaip turi būti?

Parašė samsung123· 2010 Kov. 7 11:03:13
#11

swizz, paprasčiausiai nusipiesk pvž 500x2 img su ....., prisirašysi <img src..
poto prisirašysi:

Čia kas parašė:
Parašė: <a href='profile.php?lookup=".$info['user_id']."' >".$info['user_name']."</a>




Skaitė:
Skaityta: ".$info['news_reads']."




Komentarų:
Komentarų: ".$info['news_comments']."




čia staigiai ištraukiau iš temos susilipdysi..

Parašė SWIZZ· 2010 Kov. 7 11:03:41
#12

O kaip reikia padaryti, kad paspaudus pavadinimą ikeltu į pilną naujieną... ?
coreN, dėkui, bet gal gali ikelti į mano kodą?

function render_news($subject, $news, $info) {

echo "<table width='527' cellpadding='0' cellspacing='0'>
<tr>
<td width='527' class='news-title' align='left'>$subject</td>
</tr>
<tr>
<td class='news-main' width='527' cellpadding='0' cellspacing='0'>
$news
</td>
</tr>
</table><br>\n";

}



Parašė SWIZZ· 2010 Kov. 7 17:03:11
#13

O kaip reikia padaryti, kad paspaudus pavadinimą ikeltu į pilną naujieną... ?
coreN, dėkui, bet gal gali ikelti į mano kodą?

function render_news($subject, $news, $info) {

echo "<table width='527' cellpadding='0' cellspacing='0'>
<tr>
<td width='527' class='news-title' align='left'>$subject</td>
</tr>
<tr>
<td class='news-main' width='527' cellpadding='0' cellspacing='0'>
$news
</td>
</tr>
</table><br>\n";

}



Parašė Mantow· 2010 Kov. 7 17:03:40
#14

Swizz, jau dizainus mokaisi koduoti ? :) (durnas klausimas bet ką padarysi :D )

Parašė SWIZZ· 2010 Kov. 7 17:03:52
#15

Panašiai, bet čia tik redaguoju dizainą... ;)

Parašė SWIZZ· 2010 Lie. 23 16:07:28
#16

Sveiki,

Bandau mokytis PHP ir MySQL. Dabar kuriu savo reigistravimosi sistemą, tačiau yra keletas bėdelių. Mokinuosi pagal tutorial'ą YouTube'ei. Susikūriau functions.php ir register.php failus ir juos įkėliau į FTP. Tačiau, kai mėginu užsireistruoti, man išmetą tokį užrašą:
Unknown column 'admin' in 'field list'


Štai mano functions.php failo turinys:



<?php

function protect($string) {
$string = mysql_real_escape_string($string);
$string = strip_tags($string);
$string = addslashes($string);

return $string;
}

function connect() {
$con = mysql_connect(mysqlhost, styled_blog, slaptažodis, '') or die(mysql_error());
$db = mysql_select_db(styled_swizz, $con);
}

?>



Ir beje register.php failo turinys:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="copyright" content="Visos teisės saugomos | Swizz Blog" />
<meta name="description" content="Swizz Blog" />
<meta name="keywords" content="Swizz Studija, Studija, Swizz, Dizainai, deisign, coding, programing, html, css, php, web, blog, apie mane, tinklaraštis, Tomas Balčiūnas, TBalčiūnas, Balčiūnas, balciunas, tomas, tb, tbd, Tomo Balčiūno Dizainai" />
<title>Swizz Blog - Registracija</title>
</head>

<body>

<style type="text/css">
body {
background-image:url(images/bg.png); background-repeat:repeat; font-family:Tahoma; font-size:11px; color:#333333;
}
</style>

<?php
include_once "functions.php";

connect();

if(!$_POST['submit']){
echo "<table border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n";
echo "<form method=\"post\" action=\"register.php\">\n";
echo "<tr><td colspan=\"2\" align=\"center\"><h2><b>Užpildykite registracijos formą</b></h2></td></tr>\n";
echo "<tr><td>Vartotojo vardas</td><td><input type=\"text\" name=\"username\"></td></tr>\n";
echo "<tr><td>Slaptažodis</td><td><input type=\"password\" name=\"password\"></td></tr>\n";
echo "<tr><td>Slaptažodžio patvirtinimas</td><td><input type=\"password\" name=\"passconf\"></td></tr>\n";
echo "<tr><td>El. Paštas</td><td><input type=\"text\" name=\"email\"></td></tr>\n";
echo "<tr><td>Vardas</td><td><input type=\"text\" name=\"name\"></td></tr>\n";
echo "<tr><td>Skype</td><td><input type=\"text\" name=\"skype\"></td></tr>\n";
echo "<tr><td colspan=\"2\" align=\"center\"><input type=\"submit\" name=\"submit\" value=\"Registruotis!\"></td></tr>\n";
echo "</form></table>\n";
}else {
$username = protect($_POST['username']);
$password = protect($_POST['password']);
$confirm = protect($_POST['passconf']);
$email = protect($_POST['email']);
$name = protect($_POST['name']);
$skype = protect($_POST['skype']);

$errors = array();

if(!$username){
$errors[] = "Įveskite vartotojo vardą!";

$range = range(2,32);
if(!in_array(strlen($username), $range)){
$errors[] = "Vartotojo vardas turi būti tarp 2 ir 32 simbolių!";
}
}

if(!$password){
$errors[] = "Įveskite slaptažodį!";
}

if(!$password){
if(!$confirm){
$errors[] = "Įveskite slaptažodžio patvirtinimą!";
}
}

if(!$email){
$errors[] = "Įveskite El. Paštą!";
}

if(!$name){
$errors[] = "Įveskite vardą!";
}

if(!$skype){
$errors[] = "Įveskite Skype vardą!";
}

if(!$username){
if(!ctype_alnum($username)){
$errors[] = "Vartotojo vardas gali būti sudarytas tik iš skaičių ir raidžių!";
}
}

if(!$password) {
if($password != $confirm){
$errors[] = "Slaptažodžiai nesutampa!";
}
}

if(!$email) {
$checkemail = "/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i";
if(!preg_match($checkemail, $email)){
$errors[] = "El. Paštas netinkamas, turėtu būti vardas@serveris.tld!";
}
}

if($name){
$range2 = range(3,64);
if(!in_array(strlen($name),$range2)){
$errors[] = "Your name must be between 3 and 64 characters!";
}
}

if($skype){
$range3 = range(3,16);
if(!in_array(strlen($skype),$range3)){
$errors[] = "Your AIM screenname must be between 3 and 16 characters!";
}
}
##PATS
if($username){
$sql = "SELECT * FROM `users` WHERE `username`='".$username."'";
$res = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($res) > 0){
$errors[] = "Vartotojo vardas, kurį įrašėte jau yra naudojamas, pasirinkite kitą!";
}
}

if($email){
$sql2 = "SELECT * FROM `users` WHERE `email`='".$email."'";
$res2 = mysql_query($sql2) or die(mysql_error());

if(mysql_num_rows($res2) > 0){
$errors[] = "Šis El. Pašto adresas jau naudojamas, pasirinkite kitą!";
}
}

if($skype){
$sql3 = "SELECT * FROM `users` WHERE `skype`='{$skype}'";
$res3 = mysql_query($sql3) or die(mysql_error());

if(mysql_num_rows($res3) > 0){
$errors[] = "Šis Skype vardas jau naudojamas kito vartotojo!";
}
}

if(count($errors) > 0){
foreach($errors AS $error){
echo $error . "<br>\n";
}
}else {
$sql4 = "INSERT INTO `users`
(`username`,`password`,`email`,`name`,`skype`,`admin`,`time`)
VALUES ('".$username."','".md5($password)."','".$email."','".$name."','".$skype."','0','".time()."')";
$res4 = mysql_query($sql4) or die(mysql_error());
echo "Jus sėkmingai užsiregistravote šiuo Varotojo vardu <b>".$username."</b> ir Slaptažodžiu <b>".$password."</b>!";
}
}

?>
</body>



Jeigu kas nors galite padėkit išspręsti šią problemą. Padėjusiajam +10!
Kolkas dėkui.

Redagavo Žmogus· 2010 Lie. 23 16:07:34

Parašė Žmogus· 2010 Lie. 23 16:07:08
#17

Atrodo, kad nėra admin lentelės, arba pašalink ta admin ir 0 kur

$sql4 = "INSERT INTO `users`
(`username`,`password`,`email`,`name`,`skype`,`admin`,`time`)
VALUES ('".$username."','".md5($password)."','".$email."','".$name."','".$skype."','0','".time()."')";
$res4 = mysql_query($sql4) or die(mysql_error());



Redagavo Žmogus· 2010 Lie. 23 16:07:02

Parašė SWIZZ· 2010 Lie. 23 16:07:32
#18

O kaip tada reikės pasidaryti, kad aš būčiau admin? Per MySQL? Bet ką ten keisti. Plačiau... Dėkui. :)

Parašė Žmogus· 2010 Lie. 23 16:07:26
#19

Aaaa šito nežinau tada jau :D

Parašė ramon· 2010 Lie. 27 10:07:15
#20

Turetu but tas 'admin', kadangi irasoma ar user'is yra adminas ar ne (1 - TRUE; 0 - FALSE), papostink sql `users` lentele...

Parašė SWIZZ· 2010 Lie. 27 12:07:51
#21

ramon, čia va ta lentelės užklausa, nu tipo kaip sukurti...
CREATE TABLE `users` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(32) NOT NULL,
  `password` varchar(32) NOT NULL,
  `email` varchar(255) NOT NULL,
  `name` varchar(64) NOT NULL,
  `skype` varchar(16) NOT NULL,
  `admin` int(11) NOT NULL default '0',
  `time` int(15) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;



Parašė ramon· 2010 Lie. 27 12:07:50
#22

$sql4 = "INSERT INTO `users` (`username`,`password`,`email`,`name`,`skype`,`admin`,`time`) VALUES ('".$username."','".md5($password)."','".$email."','".$name."','".$skype."','0','".time()."')";


Rasyk 0 arba 1 ir cia bus paprastas patikrinimas (NULL=FALSE, 1=TRUE - adminas)
if ($kint['admin'] == FALSE) die("Tik adminams");

Parašė SWIZZ· 2010 Lie. 27 23:07:00
#23

Jei gali įdėk tą kodą kur reikia ir plačiau paaiškink, nes nieko nesupratau, kur reikia dėti...
Vietoj to 0 rašyti 1? Pakeičiau, bet vistiek dabar rašo "Tik adminams".

EDIT: Susitvarkiau, buvo function.php blogai parašytas...
EDIT 2: Dar veinas klausimas. Kaip padaryti, kad MySQL'e nerodytų slaptažodžio MD5 kodo? Pabandžiau su paprastu decoderiu išsišifruoja. O gal galima kažkaip kitaip apsaugoti vartotojų slaptažodžius?

Redagavo SWIZZ· 2010 Lie. 27 23:07:22

Parašė Creatium· 2010 Lie. 27 23:07:24
#24

Buvo pamokėlė kažkur forume, kaip koduoti keliais kodais md5, sha1 (ar kokiu ten). Arba koduoti tą patį slaptažodį kelis kartus su md5.

Parašė SWIZZ· 2010 Lie. 28 00:07:18
#25

O kaip tai padaryti? (kad kelis kartus automatiškai koduotu?)

Redagavo SWIZZ· 2010 Lie. 28 00:07:27

Parašė Kelmas· 2010 Lie. 28 00:07:11
#26

<?php
// Senasis kodavimas
echo md5($pass);

// Rekomenduotinas kodavimas
echo md5(sha1(md5($pass).$salt));
?>



Redagavo Kelmas· 2010 Lie. 28 00:07:41

Parašė SWIZZ· 2010 Lie. 29 23:07:19
#27

Slaptažodį palikau md5 koduotės, nes nesupratau, kaip tą sha1 detį, nes kai bandžiau neįšėjo, klaidą metė...
O dabar kitas klausimas. Darau administravimo pultą surišta su MySQL, bet kai bandau prisijungti į /admin.php gaunų šią klaidą:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''users' WHERE 'id'='2'' at line 1



Ką ji galėtu reikšti? Jei kas galit pasakykit ką ne taip darau... Duosiu admin.php failo turinį, bet čia kolkas testinimui tik, jokių linkų nėra. :)
if($_SESSION['uid']){
  $sql3 = "SELECT admin FROM 'users' WHERE 'id'='".$_SESSION['uid']."'";
  $res3 = mysql_query($sql3) or die(mysql_error());
  if(mysql_num_rows($res) == 0){
    echo "Jus neteisingai prisijungėte!\n";
  }else {
    $row2 = mysql_fetch_assoc($res3);
   if($row2['admin'] != '1') {
     echo "Jus neturite teisių patekti čia!\n";
   }else {
     echo "Sveiki, jus randatės adminstracijos valdyme!\n";
   }
  }
}



sql3, res3, row2 - todėl, kad virš jų yra dar keli, bet ten viskas veikia.

Parašė Creatium· 2010 Lie. 29 23:07:57
#28

2 eilutę pakeisk į šitą ir turėtų veikt.

 $sql3 = "SELECT admin FROM users WHERE id='".$_SESSION['uid']."'";



Parašė MAnjack· 2010 Lie. 29 23:07:57
#29

FROM 'users' nereikia kabučių :)

Parašė SWIZZ· 2010 Lie. 29 23:07:57
#30

Dėkui Creatium ir MAnjack, padėjot abu tik MAnjack, suklydai reikėjo ir id kabutęs nuimti... ;)

Parašė MAnjack· 2010 Lie. 29 23:07:46
#31

Ai jo, aš kai niekada nededu ant mysql lentelės kabučių, tai man šita vieta pirmiau užkliuvo :)